Olá, acho que isso abaixo pode ajudar, porém tive que enganar os campos data para que colocassem . em vez de / senão os exceis mais novos invertem o dia com o mês. procedure form.BtnExpExcelClick(Sender: TObject);
var linha, coluna : integer;
var planilha : variant;
var valorcampo, valorcabecalho : string;
begin
// DataM1 é minha form só de banco de dados, separada
DataM1.qry1.CachedUpdates := true;
planilha:= CreateoleObject('Excel.Application');
planilha.WorkBooks.add(1);
planilha.caption := 'Exportando dados do dbGrid para o Excel';
planilha.visible := true;
DataM1.qry1.ApplyUpdates;
DataM1.qry1.First;
for linha := 0 to DataM1.qry1.RecordCount - 1 do
begin
for coluna := 1 to DataM1.qry1.FieldCount do
//valorcabecalho:='';
//valorcabecalho := DataM1.1.Fields[coluna - 1].DisplayLabel;
//if (valorcabecalho <> 'CAMPO') or (valorcabecalho <> 'CAMPO') THEN
begin
valorcampo := DataM1.qry1.Fields[coluna-1].AsString;
// tratamento para colunas que são data
if (coluna=14) or (coluna=15) or (coluna=16) then
planilha.cells[linha + 2,coluna]:= Copy(valorcampo,1,2) + '.' + Copy(valorcampo,4,2) + '.' + Copy(valorcampo,7,4)
else
planilha.cells[linha + 2,coluna]:= valorcampo;
end;
DataM1.qry1.Next;
end;
// Inserindo cabeçalho da planilha
planilha.cells[1,1] := 'cabeçalho;
planilha.columns.Autofit;
end;