Mudar nome dos titulos da planilha

Delphi

03/08/2011

Tenho uma rotina que gera uma planilha baseada no está em um DBGrid. Quando eu carregava do DBGrid, dava erro nos campos memos. Passei a carregar direto do DataSet e resolveu o poblema do campo memo, mas está carregando o nome original dos campos da tabela e preciso carregar o nome que está no DBGrid(Somente os nomes das colunas no Excel). Estava assim antes, mas não carregava o Memo, mas trazia os nomes dos títulos ExcelExport.DBGridToExcel(AGridExcel); Assim agora(abaixo) carrega os Memos, mas não consigo carregar os nomes dos títulos das colunas, ele carrega o nome que está no banco de dados. ExcelExport.DataSetToExcel(AGridExcel.DataSource.DataSet);
Pjava

Pjava

Curtidas 0

Respostas

Pjava

Pjava

03/08/2011

O que acontece é o seguinte. Em realidade ele está trazendo os campos com os nomes certos. O que está acontecendo é que ele está trazendo todos os campos do DataSet, logo os que não estão mapeados, estão aparecendo com esses nomes. Mas o problema é que ele só pode mostrar os campos selecionados(17 no total), aí o usário marca uns checkbox entre os 17 que ele quer mostrar. Não estou conseguindo trazer somente os selecionados na planilha. No Grid ele vem, mas na planilha não. Abnaixo os código referente a eles.  
try
  AGridExcel := TDBGrid.Create(self);
  AGridExcel.DataSource:=Agrid.DataSource;
  for i:=0 to Agrid.Columns.Count-1
  do begin
     AgridExcel.Columns.Add;
     AGridExcel.Columns[i].Assign(Agrid.Columns[i]);
  end;
  // Supondo que já tem o grid com as columns..
  ClbColunas.Clear;
  for aCountCol := 0 to AGridExcel.Columns.count -1 do
    ClbColunas.Items.Add(AGridExcel.Columns[aCountCol].Title.Caption+' - '+
                         AGridExcel.Columns[aCountCol].FieldName);
  self.Height := PnlButtons.Height+(AGridExcel.Columns.count * clbColunas.ItemHeight)+PnlTodos.Height+30;
 finally
//  FreeAndNil(aGridExcel);
 end;
 
var
  ExcelExport: TOLEExcel;
  i: integer;
begin
  result := TRUE;
  Screen.Cursor := crHourGlass;
  ExcelExport   := TOLEExcel.Create(Application);
  try
    ExcelExport.IgnoreFont := false;
    ExcelExport.TitleFont.Style := ExcelExport.TitleFont.Style + [fsBold];
    ExcelExport.CreateExcelInstance;
    ExcelExport.DataSetToExcel(AGridExcel.DataSource.DataSet);
    //ExcelExport.DBGridToExcel(AGridExcel);
    ExcelExport.Visible := True;
  finally
    FreeAndNil(ExcelExport);
    Screen.Cursor := crDefault;
  end;
end;
GOSTEI 0
POSTAR