Como ler um arquivo Excel

Delphi

18/03/2008

Pessoal,

Tenho um arquivo excel com 12 colunas. A | B | C .... e N linhas
Como faço para ler essas colunas e essas linhas. Tipo um for mais dentro do arquivo do Excel e jogando pra dentro do meu banco de dados?

Obrigado


Yallebr

Yallebr

Curtidas 0

Respostas

Prgdelphi

Prgdelphi

18/03/2008

Existem varias maneiras...
acredito que a mais facil é você criar um driver ODBC para esta planilha no excel e depois acessá-la pelo delphi como se ela fosse uma tabela, usando o ADOconnection.

Antes de acessar pelo odbc, é preciso nomear no excel a área de dados, voce entra na planilha pelo excel, seleciona toda a sua área de dados, que será a sua tabela, depois vai no menu inserir -> nome -> definir e dá qualquer nome.

Dentro do delphi, conectado na planilha, vc vai utilizar aquele nome informado no excel como o nome da tabela.


GOSTEI 0
Silviogs

Silviogs

18/03/2008

Olá

pesquisando no forum:

http://forum.devmedia.com.br/viewtopic.php?t=85888&highlight=excel

Atenciosamente

Silvio Guedes


GOSTEI 0
Yallebr

Yallebr

18/03/2008

Existem varias maneiras... acredito que a mais facil é você criar um driver ODBC para esta planilha no excel e depois acessá-la pelo delphi como se ela fosse uma tabela, usando o ADOconnection. Antes de acessar pelo odbc, é preciso nomear no excel a área de dados, voce entra na planilha pelo excel, seleciona toda a sua área de dados, que será a sua tabela, depois vai no menu inserir -> nome -> definir e dá qualquer nome. Dentro do delphi, conectado na planilha, vc vai utilizar aquele nome informado no excel como o nome da tabela.


Amigo isso pareceu simples, o problema é o seguinte eu vou ler um arquivo excel gerado por usuários Leigos, ele não vai saber fazer isso acima. PReciso de algo que simplemente da um loop no excel ou melhor que leia ela como banco de dados igual vc falou, mas sem precisar mudar a planilha.

Obrigado


GOSTEI 0
Silviogs

Silviogs

18/03/2008

OLá

ok entendi, mas acho que vi um tópico que lê um arquivo excel e coloca num grid, não sei se vi realmente isto mas mou tentar achar.

Silvio Guedes


GOSTEI 0
Yallebr

Yallebr

18/03/2008

Olá Silvio,

Eu vi sim, mais não é isso que quero. Quero apenas ler o arquivo excel e jogar para um banco de dados meu. Isso tem que ser transparente para o usuário

Obrigado


GOSTEI 0
Silviogs

Silviogs

18/03/2008

Olá

veje se é o seu caso:

AdoTable.Close;
AdoTable.ConnectionString :=
´Provider=Microsoft.Jet.OLEDB.4.0;´ +
´Data Source=NomeDoSeuArquivo.XLS + ´;´ +
´Extended Properties=Excel 8.0;´ +
´Persist Security Info=False´;
AdoTable.Open;


Silvio Guedes


GOSTEI 0
Yallebr

Yallebr

18/03/2008

Olá Silvio,

Obrigado. Consegui fazer com q o ADO veja o XLS o problema e que quando tento ativar aparece a mensagem ´Erro de sintaxe na clausula FROM´ vc sabe se tem alguma propriedade que tenho q mudar?


GOSTEI 0
Yallebr

Yallebr

18/03/2008

Funcinou,

Coloquei a propriedade TableDirect := True;
Obrigado


GOSTEI 0
N_informatica

N_informatica

18/03/2008

Galera é o seguinte até a versão 2003 do office eu conseguia acessar os dados de uma planilha do excel como se estivessem em uma tabela de banco de dados via ADO após atualizar a versão para o office 2007 não consigo mais.

Alguem sabe o que mudou?

Fico aguardando um auxilio.

Obrigado


GOSTEI 0
Joaoshi

Joaoshi

18/03/2008

Colega, uma alternativa seria gravar a planilha no formato CSV (separação do texto por ;), e elaborar um rotina no Delphi para fazer a leitura.


GOSTEI 0
Joaoshi

Joaoshi

18/03/2008

No lugar da carinha leia-se ponto e virgula. Um dos problemas dos ´caras´ são estas coisas novas que não são mais compativeis com as anteriores.


GOSTEI 0
Guigosnet

Guigosnet

18/03/2008

var
excel :variant;
l,c: integer;
begin
Excel := CreateOleObject(´Excel.Application´);
Excel.Visible := False;
excel.WorkBooks.Add(FilenameFocusEdit1.Text);
l:=2;
for l := 2 to linhas.Value do
begin
cdsItens.Append;
cdsItensid.AsInteger := Excel.Cells.Item[l,1].Value;
if Excel.Cells.Item[l,2].Value <> ´´ then
cdsItensnrped.AsInteger := Excel.Cells.Item[l,2].Value;
cdsItensdata.AsDateTime := strtodate(Excel.Cells.Item[l,3].value);
cdsItensproduto.AsString := Excel.Cells.Item[l,4].Value;
cdsItens.Post;
end;



Faça assim da certo tbem


GOSTEI 0
Leufmt

Leufmt

18/03/2008

a solução esta aqui: http://www.linhadecodigo.com.br/Artigo.aspx?id=773


GOSTEI 0
Mazzi

Mazzi

18/03/2008

só uma duvida minha....

nao daria certo gravando em um atributo do tipo BLOB , já que vai gravar no banco de dados?


GOSTEI 0
POSTAR