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

 



Responder a