Saludos primeramente Chicos:
realizando consulta por el club y encontrando varias códigos de interés a mi propósito para exportación desde Delphi utilizando ClientDataSet seguí dichas indicaciones de esta forma:
Código Delphi
[-]
procedure EmiteInformeVenta(FechaVentasIni, FechaVentasFin:TDate;
mGridExport :TDataSet);
var
rangoExcel : Excel2000.ExcelRange;
I, Fila : Integer;
mMarcador : TBookmark;
mTabla : TDataSet;
AplicacionExcel: TExcelApplication;
begin
with dmReportes.qInformeVentaNombreClientes do
begin
ParamByName('FECHAINI').AsDate := FechaVentasIni;
ParamByName('FECHAFIN').AsDate := FechaVentasFin;
ExecSQL;
end;
if dmReportes.cdsInformeVentaNombreCliente.Active = True then
begin
dmReportes.cdsInformeVentaNombreCliente.EmptyDataSet;
dmReportes.cdsInformeVentaNombreCliente.Active := False;
end;
dmReportes.cdsInformeVentaNombreCliente.Active := True;
AplicacionExcel := TExcelApplication.Create(Nil);
mTabla := dmReportes.cdsInformeVentaNombreCliente;
AplicacionExcel.Visible[0] := True;
AplicacionExcel.ConnectKind := ckNewInstance;
AplicacionExcel.Connect;
AplicacionExcel.Workbooks.Add(NULL, 0);
rangoExcel := AplicacionExcel.ActiveCell;
for I := 0 to mTabla.FieldCount -1 do
begin
rangoExcel.Value := mTabla.Fields[i].DisplayLabel;
rangoExcel := rangoExcel.Next;
end;
rangoExcel.AutoFormat(10, NULL, NULL, NULL, NULL, NULL, NULL);
mTabla.DisableControls;
try
mMarcador := mTabla.Bookmark;
try
mTabla.First;
Fila := 2;
while not mTabla.Eof do
begin
rangoExcel := AplicacionExcel.Range['A' + IntToStr(Fila), 'A' +
InttoStr(Fila)];
for I := 0 to mTabla.Fields.Count -1 do
begin
rangoExcel.Value := mTabla.Fields[i].AsString;
rangoExcel := rangoExcel.Next;
end;
mTabla.Next;
Inc(Fila);
end;
finally
mTabla.Bookmark := mMarcador;
mTabla.EnableControls;
end;
finally
AplicacionExcel.Disconnect;
AplicacionExcel.Free;
end;
end;
en fin al ejecutar la exportación de 10,000 mil registro es demasiado lento casi 4 minutos.
Alguien podría ayudarme a la optimización para que sea más rápida la exportación ?
Agradeciendo su colaboración;
Saludos;
novato_erick