GARANTIR DESCONTO

Fórum Como ler um arquivo Excel #355557

18/03/2008

0

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

Responder

Posts

18/03/2008

Prgdelphi

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.


Responder

Gostei + 0

18/03/2008

Silviogs

Olá

pesquisando no forum:

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

Atenciosamente

Silvio Guedes


Responder

Gostei + 0

18/03/2008

Yallebr

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


Responder

Gostei + 0

18/03/2008

Silviogs

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


Responder

Gostei + 0

18/03/2008

Yallebr

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


Responder

Gostei + 0

18/03/2008

Silviogs

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


Responder

Gostei + 0

18/03/2008

Yallebr

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?


Responder

Gostei + 0

18/03/2008

Yallebr

Funcinou,

Coloquei a propriedade TableDirect := True;
Obrigado


Responder

Gostei + 0

10/07/2008

N_informatica

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


Responder

Gostei + 0

10/07/2008

Joaoshi

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.


Responder

Gostei + 0

10/07/2008

Joaoshi

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.


Responder

Gostei + 0

10/07/2008

Guigosnet

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


Responder

Gostei + 0

14/07/2008

Leufmt

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


Responder

Gostei + 0

14/07/2008

Mazzi

só uma duvida minha....

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


Responder

Gostei + 0

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

Aceitar