Gerar planilhas do excel através de uma consulta (Query)

Muitas vezes precisamos de vários relatórios que se diferem pelos campos que são apresentados. Nestas ocasiões o melhor é gerar uma planilha no excel onde o usuário pode facilmente exluir as colunas que ele não precisa. Para isto criei um procedimento que recebe como parâmetro o nome de um consulta (Query) e gera uma planilha com os campos e registros da consulta.

Esta é mais uma facilidade do Delphi.

Veja o Código:


procedure TNOMEDOFORMULÁRIO.GerarExcel(Consulta:TQuery);

var

coluna, linha: integer;

excel: variant; valor: string;

begin

try

excel:=CreateOleObject('Excel.Application');

excel.Workbooks.add(1);

except Application.MessageBox ('Versão do Ms-Excel'+

'Incompatível','Erro',MB_OK+MB_ICONEXCLAMATION);

end;

Consulta.First;

try

for linha:=0 to Consulta.RecordCount-1 do

begin

for coluna:=1 to Consulta.FieldCount do

begin

valor:= Consulta.Fields[coluna-1].AsString;

excel.cells [linha+2,coluna]:=valor;

end;

Consulta.Next;

end;

for coluna:=1 to Consulta.FieldCount do

begin

valor:= Consulta.Fields[coluna-1].DisplayLabel;

excel.cells[1,coluna]:=valor;

end;

excel.columns.AutoFit;

excel.visible:=true;

except

Application.MessageBox ('Aconteceu um erro desconhecido durante a conversão'+

'da tabela para o Ms-Excel','Erro',MB_OK+MB_ICONEXCLAMATION);

end;

end;


- Substitua NOMEDOFORMULÁRIO pelo nome do formulário onde você está inserindo este procedimento.

- Declare o procedimento na cláusula type: procedure GerarExcel(Consulta:TQuery);

- Declare a unit ComObj na cláusula uses.

- Para chamar : GerarExcel(NOMEDACONSULTA);