Fórum Exportar tabela para Excel... #213864

13/02/2004

0

Como posso exportar os dados de uma consulta para uma tabela em Excel? Uso Delphi 6 que possui diversos componetes com o ícone do Excel, Word, PowerPoint, etc.
Grato da ajuda!


Geronildojr

Geronildojr

Responder

Posts

13/02/2004

Lucas Silva

uses ComObj;
.
.
.
procedure TForm1.Button1Click(Sender: TObject);
var excel: variant;
begin

      excel := CreateOleObject(´Excel.Application´);
      excel.Workbooks.add(1);
      excel.Cells.Select;
      excel.Selection.NumberFormat := ´@´;


      excel.cells[1,1] := ´Teste´;
      excel.columns.AutoFit;
      excel.cells[1,1].Select;
      excel.visible := true;

end;



Lucas!


Responder

Gostei + 0

13/02/2004

Geronildojr

Ok!
Agora como faço para exportar para o excel o conteúdo de um DBGrid?
Grato pela ajuda!


Responder

Gostei + 0

13/02/2004

Lucas Silva

Da um for com todos os registros da query
 for i:= 0 to query.recordCount  - 1 do
    aqui vc joga o código de exportação


Qualquer dúvida me dá o toque ae....


Responder

Gostei + 0

13/02/2004

Geronildojr

Está dando erro!

[b]Código:[/b]
procedure T_main.Button1Click(Sender: TObject);
var excel: variant;
begin
for i:= 0 to Q_Consulta.recordCount - 1 do
begin
excel := CreateOleObject(´Excel.Application´);
excel.Workbooks.add(1);
excel.Cells.Select;
excel.Selection.NumberFormat := ´@´;

excel.cells[1,1] := ´teste´;
excel.columns.AutoFit;
excel.cells[1,1].Select;
excel.visible := true;
end;
end;

[b]Erro:[/b]
[Warning] Main.pas(1179): For loop control variable must be simple local variable
[Fatal Error] Main.pas(1191): Internal error: C1051


Responder

Gostei + 0

13/02/2004

Bolus

Caro Colega,
Observando o código fornecido, falta declarar na seção VAR a variavel I, utilizada no Laço FOR .

Seu código esta assim:
procedure T_main.Button1Click(Sender: TObject); 
var 
  excel: variant; 
begin 
  for i:= 0 to Q_Consulta.recordCount - 1 do 
  begin 
    excel := CreateOleObject(´Excel.Application´); 
    excel.Workbooks.add(1); 
    excel.Cells.Select; 
    excel.Selection.NumberFormat := ´@´; 

    excel.cells[1,1] := ´teste´; 
    excel.columns.AutoFit; 
    excel.cells[1,1].Select; 
    excel.visible := true; 
  end; 
end; 


deverá ficar assim :

procedure T_main.Button1Click(Sender: TObject); 
var 
  excel: variant; 
  i : Integer;
begin 
  for i:= 0 to Q_Consulta.recordCount - 1 do 
  begin 
    excel := CreateOleObject(´Excel.Application´); 
    excel.Workbooks.add(1); 
    excel.Cells.Select; 
    excel.Selection.NumberFormat := ´@´; 

    excel.cells[1,1] := ´teste´; 
    excel.columns.AutoFit; 
    excel.cells[1,1].Select; 
    excel.visible := true; 
  end; 
end; 



Responder

Gostei + 0

13/02/2004

Geronildojr

[b]Blz! Não deu mais o erro. [/b]
Só que acontece o seguinte: Como a query de consulta (Q_Consulta) encontra 2 registros (do qual fiz a consulta com os critérios e tal), então o aplicativo abre 2 planílias (excel) exibindo na linha 1 coluna 1 ´Teste´ e não o conteúdo do DBGrid. Creio que se a query encontrar 1000 registros, lascou tudo: 1000 planílias serão abertas.
Grato pela ajuda!


Responder

Gostei + 0

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

Aceitar