Como trabalhar com Excel Variant em Delphi

Soon Sam Santos
2 min readSep 13, 2020
Photo by Carlos Muza on Unsplash

Incluir exportação para o Excel no seu software é uma máquina muito poderosa e rápida. Para o seu cliente que gosta de Excel é só ele exportar e continuar trabalhando por lá se quiser acrescentar algo.

Direto para o Código

No código vou utilizar TFDQuery e TDBGrid porém você pode fazer o mesmo com qualquer TClientDataSet ou outra maneira que você está utlizando.

1. Uses clauses

A principais uses clauses são:

uses
System.Win.ComObj, Vcl.DBGrids, FireDAC.Comp.Client, Datasnap.DBClient ...;

Para o Excel é apenas a ComObj , as outras são para os dados.

2. Criar o Objeto

Esse código cria o Objeto Excel.Application e adiciona a primeira página do excel.

procedure GerarExcel(AQuery: TFDQuery);
var
Excel: OleVariant;
linha, coluna, I, X: Integer;
Caminho: string;
begin
Excel := CreateOleObject('Excel.Application');
Excel.Visible := True;
Excel.Workbooks.Add;

3. Adicionar Títulos

O código das células é representado por Cells[Linha, Coluna], no parâmetro da esquerda é só colocar a linha que deseja inserir e no parâmetro da direita a coluna. No código abaixo estou inserindo os títulos, então estão todos na primeira linha e (1º, 2º, … nº coluna).

Os outros parâmetros são intuitivos, para settar Cor, Tamanho da Fonte, Tipo da Fonte, Valor da célular, tamanho da célula.

Excel.WorkBooks[1].Sheets[1].Cells[1, 1].Font.Color :=clBlack;Excel.WorkBooks[1].Sheets[1].Cells[1, 1].Font.Size :=12;Excel.WorkBooks[1].Sheets[1].Cells[1, 1].Font.Bold := True;
Excel.WorkBooks[1].Sheets[1].Cells[1, 1] := 'Documento';
Excel.WorkBooks[1].Sheets[1].Cells[1, 1].ColumnWidth := 10;
Excel.WorkBooks[1].Sheets[1].Cells[1, 2].Font.Color :=clBlack;Excel.WorkBooks[1].Sheets[1].Cells[1, 1].Font.Size :=12;Excel.WorkBooks[1].Sheets[1].Cells[1, 2].Font.Bold := True;
Excel.WorkBooks[1].Sheets[1].Cells[1, 2] := 'Conta';
Excel.WorkBooks[1].Sheets[1].Cells[1, 2].ColumnWidth := 10;

4. Adicionar Conteúdo

Para adicionar o conteúdo vamos simplesmente executar um loop no nosso TFDQuery que é a fonte de dados e ir inserindo os dados nas células.

A variável I irá representar a linha em que estamos e então vamos variando a coluna que os dados serão mostrados.

I := 1;
with AQuery do
begin
First;
while not Eof do
begin
Excel.WorkBooks[1].Sheets[1].Cells[I + 1, 1] := FieldByName('id_pessoa').AsString;
...
Inc(I);
Next;
end;
end;

Código Completo

No primeiro método o arquivo é exportado e o Excel se mantém em aberto, então o usuário deve selecionar onde o arquivo será salvo.

No segundo método o Excel não é aberto e o arquivo é salvo de forma automática.

Encontre o código completo aqui

Referências

--

--

Soon Sam Santos

Flutter and Delphi Developer at Green. Teacher at SoonClass