Yoshi 1 Denunciar post Postado Setembro 25, 2008 :blink: Ae gente http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif vi nesse topico http://forum.imasters.com.br/index.php?showtopic=259016 como importar dados do Excel p/ uma grid mais alguem sabe como importar p/ um banco de dados?? Vlw t+ http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Setembro 25, 2008 Pelo que vi no código do link que passou, a rotina de carga do excel lê linha a linha e coluna a coluna os valores da planilha e joga num grid... o que você teria que fazer é ler a linha, guardar os valores que quer gravar em variáveis (1 pra cada coluna provavelmente) e depois, ao mudar de linha, dar um insert no banco com os valores lidos antes de ler os dados da nova linha... só estudar um pouco a rotina do link que você consegue fazer. ;) Compartilhar este post Link para o post Compartilhar em outros sites
Yoshi 1 Denunciar post Postado Setembro 25, 2008 Entaum eu tentei doutros jeitos mais como eu comecei a programar a pouco tempo ainda tenhu muitas duvidas de como fazer certas coisas. Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Setembro 25, 2008 Bom, não testei o código abaixo, mas acho que vai te ajudar pra começar... Vamos supor que sua tabela tem a seguinte estrutura (que será igual a da planilha a ser importada): TABELA TESTE CODIGO INTEGER; NOME STRING; IDADE INTEGER; Na estrutura acima, a primeira coluna da planilha seria o código, a segunda o nome e a terceira idade ok? Ai a rotina ficaria algo semelhante a isto: function ImportaXLS(AXLSFile: string): Boolean; const xlCellTypeLastCell = $0000000B; var XLApp, Sheet: OLEVariant; RangeMatrix: Variant; x, y, k, r: Integer; //Variáveis a serem usadas nos inserts Codigo, Idade : Integer; Nome : String; begin Result:=False; //Cria Excel- OLE Object XLApp:=CreateOleObject('Excel.Application'); try //Esconde Excel XLApp.Visible:=False; //Abre o Workbook XLApp.Workbooks.Open(AXLSFile); Sheet:=XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1]; Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate; //Pegar o número da última linha x:=XLApp.ActiveCell.Row; //Pegar o número da última coluna y:=XLApp.ActiveCell.Column; //Associaca a variant WorkSheet com a variant do Delphi RangeMatrix:=XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value; //Cria o loop para carregar os registros nas variáveis de controle e passar para uma rotina de inserção no banco k:=1; repeat for r:=1 to y do Case r of 1 : Codigo := RangeMatrix[K, R]; //Talvez aqui precise converter o valor 2 : Nome := RangeMatrix[K, R]; //Talvez aqui precise converter o valor 3 : Idade := RangeMatrix[K, R]; //Talvez aqui precise converter o valor End; InserirDadosBanco(Codigo, Nome, Idade); //Rotina para gravar os dados no banco com suas devidas validações Inc(k,1); until k > x; RangeMatrix:=Unassigned; finally //Fecha o Excel if not VarIsEmpty(XLApp) then begin XLApp.Quit; XLAPP:=Unassigned; Sheet:=Unassigned; Result:=True; end; end; end; []'s Compartilhar este post Link para o post Compartilhar em outros sites
Yoshi 1 Denunciar post Postado Setembro 26, 2008 :clap:Ae broder concegui vlw mesmo em o codigo ficou assim:http://forum.imasters.com.br/public/style_emoticons/default/clap.gif function TForm1.ImportaXLS(AXLSFile: string): Boolean; const xlCellTypeLastCell = $0000000B; var XLApp, Sheet: OLEVariant; RangeMatrix: Variant; x, y, k, r: Integer; //Variáveis a serem usadas nos inserts COD, VALOR : Integer; DESCRICAO : String; begin Result:=False; //Cria Excel- OLE Object XLApp:=CreateOleObject('Excel.Application'); try //Esconde Excel XLApp.Visible:=False; //Abre o Workbook XLApp.Workbooks.Open(AXLSFile); Sheet:=XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1]; Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate; //Pegar o número da última linha x:=XLApp.ActiveCell.Row; //Pegar o número da última coluna y:=XLApp.ActiveCell.Column; //Associaca a variant WorkSheet com a variant do Delphi RangeMatrix:=XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value; //Cria o loop para carregar os registros nas variáveis de controle e passar para uma rotina de inserção no banco k:=1; repeat for r:=1 to y do Case r of 1 : COD := RangeMatrix[K, R]; //Talvez aqui precise converter o valor 2 : DESCRICAO := RangeMatrix[K, R]; //Talvez aqui precise converter o valor 3 : VALOR := RangeMatrix[K, R]; //Talvez aqui precise converter o valor End; IBQuery1.Close; IBQuery1.SQL.Clear; IBQuery1.SQL.Add('insert into PRODUTO (COD, DESCRICAO, VALOR)'); IBQuery1.SQL.Add('values (:COD, :DESCRICAO, :VALOR)'); IBQuery1.ParamByName('COD').AsString := IntToStr(COD); IBQuery1.ParamByName('DESCRICAO').AsString := DESCRICAO; IBQuery1.ParamByName('VALOR').AsString := IntToStr(VALOR); IBQuery1.ExecSQL; // InserirDadosBanco(Codigo, Nome, Idade); //Rotina para gravar os dados no banco com suas devidas validações Inc(k,1); until k > x; RangeMatrix:=Unassigned; finally //Fecha o Excel if not VarIsEmpty(XLApp) then begin XLApp.Quit; XLAPP:=Unassigned; Sheet:=Unassigned; Result:=True; end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin ImportaXLS('C:\Documents and Settings\Gabriel\Desktop\Plan1.xls'); end; T+ vlw http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Setembro 30, 2008 No caso o fonte carrega tudo primeiramente para um TStringGrid, e então depois poderia fazer o procedimento que desejar, sendo que poderia ler o TStringGrid e inserir no seu BD. Mas bom que conseguiu... Compartilhar este post Link para o post Compartilhar em outros sites