Olá Galera, segue uma pequena dica para quem precisa exportar um DataSet para o Excel.

Aqui você verá na prática como exportar os dados vindos de um DataSet para uma planilha, armazenando nas células correspondentes os mais variados tipos, como datas, moedas, números, textos e ainda fórmulas. Veja também como inserir novas abas, bem como definir uma apresentação para o seu documento formatando a aparência das suas células.

procedure TFrmConsultaCliente.GerarXLS(DSPadrao: TDataSet);
Var
  Lin, Col   : Integer;
  xExcel     : Variant;
  Conteudo : String;
begin

  Try
   if DSPadrao.RecordCount < 1 then
   begin
     Application.MessageBox('Nenhum registro a ser exportado','Atenção',MB_OK);
     Exit;
   end;
   Try
     xExcel:= CreateoleObject('Excel.Application');
     xExcel.WorkBooks.add(1);
     xExcel.caption := 'Titulo da Planilha ';
     xExcel.visible := False;

     DSPadrao.DisableControls;
     DSPadrao.First;

     for Lin := 0 to DSPadrao.RecordCount - 1 do
     begin
       for Col := 1 to DSPadrao.FieldCount do
       begin
         Conteudo := DSPadrao.Fields[Col - 1].AsString;
         xExcel.cells[Lin + 2,Col]:= Conteudo;
       end;

      DSPadrao.Next;
      Application.ProcessMessages;
     end;
     for Col := 1 to DSPadrao.FieldCount do
     begin
       Conteudo := DSPadrao.Fields[Lin - 1].Name;
       xExcel.cells[1,Col] := Conteudo;
       xExcel.Range['A1','Z1'].font.bold := true; // Negrito
       xExcel.Range['A1','Z1'].Interior.Color := $00D6D6D6; // Cor da Célula
       xExcel.Range['A1','Z1'].RowHeight := 25; //Altura da Célula
     end;
     xExcel.visible := True;
     xExcel.columns.Autofit;  //Alinhar automaticamete o tamanho da coluna
   finally
     DSPadrao.EnableControls;
     Enabled := True;
   end;
  Except
    on e : Exception do
        raise Exception.Create('Erro ao exportar planilha ' +#13+
                               '================'+#13+#13+
                               'Menssagem : ' + E.Message +#13+
                               'Classe : '    + E.ClassName);
  end;
end;

Até a próxima.