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;