Tenho o inverso... De Tabela/Query para Excel, mas você pode adaptar para atender a sua necessidade. Segue abaixo: Obs: o objeto Pb, é apenas uma progress bar.
Procedure TFormVertices.BitBtn1Click(Sender: TObject); Var RangeE : Excel2000.Range; //RangeE : Excel97.Range; // quando for o Office97 que vc. estiver utilizando ! I, Row : Integer; cOcorrencia : String; //wIni, wFin : OleVariant; //wIni, wFin : Integer; begin try QBaseVert.Open; // Abre Caso Não Esteja Aberta QBaseVert.First; //########################################################################## # Screen.Cursor := crHourGlass; Pb.Visible := True; Pb.Position:=0; Pb.Min:=0; Pb.Max:=QBaseVert.RecordCount; //########################################################################## # // Abre o Excel ExcelApplication1.Visible[ 0 ] := True; // Cria a planilha ExcelApplication1.Workbooks.Add( NULL, 0 ); // Set no Range da Célula Ativa RangeE := ExcelApplication1.ActiveCell; // Cabeçalho (Opcional) RangeE.Value := 'Transações Analíticas - Data: ' + DateToStr( Now ) ; // Muda o formato da data no Aplicativo para os "Campos Tipo Data" // Se não mudar, o Excel pode ficar maluco caso sejam Campos Data (Testar) ShortDateFormat := 'mm/dd/yyyy'; Row := 3; RangeE := ExcelApplication1.Range[ 'A' + IntToStr( Row ), 'A' + IntToStr( Row ) ]; // coloca os nomes de campos na linha 3 // -1 porque Fields.Count começa no Index = 0 for i := 0 to QBaseVert.Fields.Count - 1 do begin RangeE.Value := QBaseVert.Fields[ i ].DisplayLabel; RangeE := RangeE.Next; end; // Adiciona os dados da QBaseVert QBaseVert.DisableControls; Try QBaseVert.First; //cOcorrencia := QBaseVertNOME_OCORR.AsString; //cOcorrencia := TblSource.Fields[ 1 ].AsString ; // Os Dados Começam na linha 4 Row := 4; while not QBaseVert.EOF do begin RangeE := ExcelApplication1.Range[ 'A' + IntToStr ( Row ), 'A' + IntToStr( Row ) ]; for I := 0 to QBaseVert.Fields.Count - 1 do begin //if ( QBaseVert.Fields[ i ].AsString = 'True' ) Then // Para Campos Tipo Boolean // RangeE.Value := ' X' //else if QBaseVert.Fields[ i ].DataType in [ftFloat] then begin RangeE.Value := QBaseVert.Fields[ i ].AsFloat ; end else if QBaseVert.Fields[ i ].DataType in [ftSmallint, ftInteger, ftWord, ftCurrency, ftBCD, ftBytes, ftVarBytes, ftAutoInc, ftLargeint ] then begin RangeE.Value := FormatFloat('#,##0.00', QBaseVert.Fields[ i ].AsFloat) ; end else begin RangeE.Value := QBaseVert.Fields[ i ].AsString; end; RangeE := RangeE.Next; end; QBaseVert.Next; // Quando mudar de Ocorrência ... //if (QBaseVertNOME_OCORR.AsString <> cOcorrencia) then //if (TblSource.Fields[ 1 ].AsString <> cOcorrencia) then //begin //inc( Row ); // Faz Pular a Linha // RangeE.Value := ''; //cOcorrencia := QBaseVertNOME_OCORR.AsString; // cOcorrencia := TblSource.Fields[ 1 ].AsString; //end; Inc( Row ); Pb.Position := Pb.Position + 1; //FormConciliacaoTransacoes.Refresh; end; Finally QBaseVert.EnableControls; end; // formata as células ( AutoFormat do Excel ) RangeE := ExcelApplication1.Range[ 'A1', 'AA' + IntToStr( Row - 1 ) ]; //RangeE := ExcelApplication1.Range[ IntToStr(wIni), IntToStr(wFin) ]; RangeE.AutoFormat( 3, NULL, NULL, NULL, NULL, NULL, NULL ); // Volta o formato da data para o correto ShortDateFormat := 'dd/mm/yyyy'; finally Pb.Visible := False; Pb.Position:=0; Screen.Cursor := crDefault; ExcelApplication1.Disconnect; end; end; Espero que sirva ! [ ]'s Rogério ----- Original Message ----- From: "Vicente Lima" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, October 25, 2004 4:09 PM Subject: [delphi-br] Importação Planilha Excel Pessoal. Alguém teria um exemplo ou apostila que mostre como importar uma planilha do Excel via Delphi. Vicente Lima [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html