Fórum Importar uma Planilha do Excel através do Delphi6 ! #158690

08/05/2003

0

Prezados Amigos,

Como posso importar uma planilha do MS-Excel através do Delphi para um determinado banco de dados ou até mesmo para um txt.
Veja bem só preciso saber como ler a planilha por dentro do delphi e buscar as informações que necessito!

atenciosamente,

Vinicius Pacca


Viniciuspacca

Viniciuspacca

Responder

Posts

09/05/2003

Skaarj

Bem ae vai a resposta.

Aqui eu fiz usando Interbase 6 e Ms-Excel 2000.. Mas deve ser meio geral.
Cria a variavel para conexao do Ole com o Excel e uma variavel para ordenar as linhas de cópia dos dados.
[b:0060ed02be]var
Excel: Variant;
Linha:integer;[/b:0060ed02be]
Inicialmente eu esvaziei a tabela que iria receber os dados [as vezes ela pode conter alguma coisa].
[b:0060ed02be]while not DtmPlugin_Controle.Produto.IsEmpty do
begin
DtmPlugin_Controle.Produto.Delete;
end;[/b:0060ed02be]
Então mandei criar a conexão com o Excel e abrir o arquivo que contém os dados[[u:0060ed02be]Excel.WorkBooks.Open(´c:\controle\Excel\produto.xls´);[/u:0060ed02be]]. No meu caso precisei enviar o foco para a linha 3 do Excel, pois as anteirores estavam ocupadas por dados irrelevantes ao BD em Interbase, era penas para amostragem em Excel
[b:0060ed02be]Excel := CreateOleObject(´Excel.Application´);
Excel.Visible :=True;
Excel.WorkBooks.Open(´c:\controle\Excel\produto.xls´);
linha:=3;[/b:0060ed02be]
Coloquei uma Label, chamada [i:0060ed02be]lblapoio[/i:0060ed02be] para veirificar quando não existem dados no arquivo em Excel [essa label esta com visible=true e pode ser substituida por uma variavel String]
[b:0060ed02be]lblapoio.caption:=VarToStr(Excel.WorkBooks[1].Sheets[1].Cells[3,1]);[/b:0060ed02be]
Agora sim, enquanto essa variavel não estiver vazia, ele vai dando um insert no banco de dados, e recebendo os valores do arquivo em Excel.
No final ele avança uma linha no Excel e seta os valores dessa linha na [i:0060ed02be]lblapoio[/i:0060ed02be][os dados que estiverem na coluna 1[A] dessa linha], além de, é claro, gravar os dados no banco de dados
[b:0060ed02be]While lblapoio.caption<>´´ do
Begin
DtmPlugin_Controle.Produto.Insert;
DtmPlugin_Controle.ProdutoNOME.Value:=Excel.WorkBooks[1].Sheets[1].Cells[linha,1];
DtmPlugin_Controle.Produto.Post;
Linha:=Linha+1;
lblapoio.caption:=Excel.WorkBooks[1].Sheets[1].Cells[linha,1];
end;[/b:0060ed02be]
Apresenta uma mensagem depois de tudo isso mostrando o fim da operação
[b:0060ed02be]Application.MessageBox(´Concluído´,´Controle [Excel]´,0);[/b:0060ed02be]

Segue um exemplo com componentes sem renomeacao [componentes DataAcess]
var Excel: Variant; Linha:integer; begin while not Table1.IsEmpty do begin Table1.Delete; end; Excel := CreateOleObject(´Excel.Application´); Excel.Visible :=True; Excel.WorkBooks.Open(´c:\arquivo.xls´); linha:=3; label1.caption:=VarToStr(Excel.WorkBooks[1].Sheets[1].Cells[3,1]); While label1.caption<>´´ do Begin Table1.Insert; Table1Campo1.Value:=Excel.WorkBooks[1].Sheets[1].Cells[linha,1]; Table1Campo2.Value:=Excel.WorkBooks[1].Sheets[1].Cells[linha,2]; Table1.Post; Linha:=Linha+1; label1.caption:=Excel.WorkBooks[1].Sheets[1].Cells[linha,1]; end; Application.MessageBox(´Concluído´,´Exemplo´,0);



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar