Como ler um arquivo Excel
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
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
Curtidas 0
Respostas
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.
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
18/03/2008
Olá
pesquisando no forum:
http://forum.devmedia.com.br/viewtopic.php?t=85888&highlight=excel
Atenciosamente
Silvio Guedes
pesquisando no forum:
http://forum.devmedia.com.br/viewtopic.php?t=85888&highlight=excel
Atenciosamente
Silvio Guedes
GOSTEI 0
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
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
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
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
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
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
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
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?
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
18/03/2008
Funcinou,
Coloquei a propriedade TableDirect := True;
Obrigado
Coloquei a propriedade TableDirect := True;
Obrigado
GOSTEI 0
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
Alguem sabe o que mudou?
Fico aguardando um auxilio.
Obrigado
GOSTEI 0
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
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
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
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
18/03/2008
a solução esta aqui: http://www.linhadecodigo.com.br/Artigo.aspx?id=773
GOSTEI 0
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?
nao daria certo gravando em um atributo do tipo BLOB , já que vai gravar no banco de dados?
GOSTEI 0