Ver Mensaje Individual
  #1  
Antiguo 03-08-2011
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Reputación: 21
Paulao Va por buen camino
Error al generar excel

Esta aplicacion, quando me voy a generar una planilla Excel, me lo da un error asi: Los campos Text(Sql Server) no si muestra en la planilla, ellos si muestram asi: [Memo]. No se porque. Abajo estan los codigos que generan los archivos Excel.


Código:
procedure TF_GeraGridExcel.FormShow(Sender: TObject);
var
  aCountCol: Integer;
  i:integer;
begin
 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;
end;


function TF_GeraGridExcel.GerarGridNoExcel(ADBGrid : TDbgrid): boolean;
var
  ExcelExport: TOLEExcel;
begin
  result := TRUE;
  Screen.Cursor := crHourGlass;
  ExcelExport   := TOLEExcel.Create(Application);
  try
    ExcelExport.IgnoreFont := false;
    ExcelExport.TitleFont.Style := ExcelExport.TitleFont.Style + [fsBold];
    ExcelExport.CreateExcelInstance;
    ExcelExport.DBGridToExcel(AGridExcel);
    ExcelExport.Visible := True;
  finally
    FreeAndNil(ExcelExport);
    Screen.Cursor := crDefault;
  end;
end;


procedure TF_GeraGridExcel.CheckBox1Click(Sender: TObject);
var
  aCount: Integer;
begin
  for aCount := 0 to ClbColunas.Items.Count -1 do
    ClbColunas.Checked[aCount] := (not ClbColunas.Checked[aCount]);
  self.Height := PnlButtons.Height+(AGrid.Columns.count * clbColunas.ItemHeight)+PnlTodos.Height;
end;
procedure TF_GeraGridExcel.BtnGerarGridExcelClick(Sender: TObject);
var
  aCount,
  aCountMax  : Integer;
begin
  if CheckedCount(clbColunas) = 0 then
  begin
    MessageDlg('Marque pelo menos uma coluna',mtInformation,[mbOk],0);
    exit;
  end;
  for aCount :=0 to ClbColunas.Items.Count -1
  do begin
    if (not ClbColunas.Checked[aCount]) then
    begin
       AgridExcel.Columns[aCount].Visible:=FALSE;
    end;
  end;
  aCount := 0;
  aCountMax := AgridExcel.Columns.Count -1;
  while aCount <= aCountMax do
  begin
    if (not AgridExcel.Columns[aCount].Visible) then
    begin
        AgridExcel.Columns.Delete(aCount);
        dec(aCountMax);
    end
    else
      Inc(acount);
  end;
  try
   ExibeMensagem(emCria,'Gerando planilha Excel');
   GerarGridNoExcel(AGridExcel);
  finally
   ExibeMensagem(emDestroi);
   AGridExcel.Columns.Assign(Agrid.Columns);
  end;
end;


function TF_GeraGridExcel.CheckedCount(aCheckListBox : TCheckListBox): Integer;
var
  aCount: Integer;
begin
 result := 0;
 for aCount := 0 to aCheckListBox.Items.Count -1 do
   if aCheckListBox.Checked[aCount] then
     Inc(result);
end;
Responder Con Cita