Apesar de parecer não muito sensato usar excel como tabela, esse artigo é muito útil. No dia a dia, diversas vezes recebi planilhas excel enviadas por clientes e fornecedores da empresa, com dados que precisavam ser conciliados ou comparados com informações do banco.
Mas então, o que fazer ? Eu criava uma tabela no banco e importava a planilha,. Isso não é tão demorado, mas as vezes é complicado, você não quer ficar criando tabelas no teu banco, principalmente se precisa de poucas informações pra cruzar com a planilha.
Outro fato importante, é poder automatizar isso para o usuário, ele mesmo abre a planilha, e com alguns ajustes poderia cruzar informações com o seu sistema.
Fiz o projeto no delphi 2006 mas provavelmente funciona nas outras versões. Este projeto vai ter um único form principal, onde você poderá abrir uma planilha excel e ver e alterar os dados, também terá um combo box para você navegar entre as planilhas do arquivo.
Então mãos a obra:
1. Crie um novo projeto VCL Forms
2. Adicione ao Form1:
- TPanel
Dentro do Panel1:
- TADOConnection
- DataSource
- TADOQuery
- TButton
- TOpenDialog
- TComboBox
Fora do Panel1
- TDBGrid
Deixe o Panel1 com align=alTop
Deixe o DBGrid1 com align=alClient
No TADOConnection1, mude LoginPrompt para: False
e a propriedade provider para: Microsoft.Jet.OLEDB.4.0
Na propriedade DataSource do DBGrid1 coloque: DataSource1
Na propriedade DataSet do DataSource1 coloque: ADOQuery1
e no ADOQuery1 coloque na propriedade Connection: ADOConnection1
Ficará como na figura abaixo:
Vamos criar a procedure que abre o dataset e faz o tamanho das colunas ficar com o tamanho máximo de 450:
No código fonte, na parte das declarações, adicione uma linha em public, com a declaração da procedure:
procedure AbrePlan(Plan:String);
Vai ficar assim:
Agora o código da procedure:
procedure TForm1.AbrePlan(Plan:String);
var i:Integer;
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM ['+Plan+'];');
ADOQuery1.Open;
for i := 0 to DBGrid1.Columns.Count - 1 do
begin
if DBGrid1.Columns[i].Width>450 then
DBGrid1.Columns[i].Width:=450
end;
end;
Agora, clique duas vezes no Button1 e cole o código abaixo:
if OpenDialog1.Execute then
begin
ADOQuery1.Close;
AdoConnection1.Connected:=False;
AdoConnection1.ConnectionString:=
'Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source='+OpenDialog1.FileName+ ';'+
'Extended Properties=Excel 8.0;';
AdoConnection1.Open;
AdoConnection1.GetTableNames(ComboBox1.Items,True);
ComboBox1.ItemIndex:=0;
AbrePlan(ComboBox1.Text);
end;
E por fim, no evento OnChange do ComboBox1:
AbrePlan(ComboBox1.Text);
Pronto, esse programa basicamente abre a planilha, deixa todas as colunas com o tamanho máximo de 450 e o combo box escolhe em qual pasta você vai trabalhar. Dá pra inclusive fazer atualização de dados. Até a próxima.