Tema: excel lento
Ver Mensaje Individual
  #1  
Antiguo 04-09-2007
vipernet vipernet is offline
Miembro
 
Registrado: may 2006
Posts: 14
Reputación: 0
vipernet Va por buen camino
excel lento

Buenas a todos, tengo un problema con la velocidad en la que se me generan los informes de excel, en el sistema se generan reportes a excel que no tienen menos de 1000 lineas y algunos llegan hasta las 65000, y se necesita si o si que los informes los genere a excel, pero el sistema tarda demasiado en generar los informes, mas especificamente en pegar los datos en la planilla. yo les dejo aca el codigo para ver que esta mal o que se puede mejorar(seguro que la mayoria de las cosas), pero tambien estuve buscando y no encontre el famoso componente datatoxls, queria ver si con ese componente podia aumentar la velocidad de generacion.

les comento que para generar un reporte de 9000 lineas tardo 3 minutos!!
y lo tarda en importarlas al excel, porque ya comprobe que la consulta la realiza en 1"

bueno, les dejo el codigo de la importacion.

saludos y gracias!!!!

procedure Tinfgastmens.Button1Click(Sender: TObject);
var i : integer;
begin
tinfgastomensual.Close;
tinfgastomensual.Prepared;
tinfgastomensual.Parameters.ParamValues ['@fecha1']:= datetimepicker1.Date;
tinfgastomensual.Parameters.ParamValues ['@fecha2']:= datetimepicker2.Date;
tinfgastomensual.Open;
excel.Workbooks.Add('C:\Sistemas vientos\sistemas ordenes de compra\reportes\listherrcargo.xls',0);
excel.Cells.Item[5,2]:=date;
for i:=0 to tinfgastomensual.RecordCount -1 do
begin
excel.Cells.Item[i+9,1]:=tinfgastomensual.FieldValues['apellido'];
excel.Cells.Item[i+9,2]:=tinfgastomensual.FieldValues['nombre'];
excel.Cells.Item[i+9,3]:=tinfgastomensual.FieldValues['area'];
excel.Cells.Item[i+9,4]:=vartostr (tinfgastomensual.FieldValues['tel']);
excel.Cells.Item[i+9,5]:=tinfgastomensual.FieldValues['cargo'];
excel.Cells.Item[i+9,6]:=tinfgastomensual.FieldValues['categoria'];
excel.Cells.Item[i+9,7]:=tinfgastomensual.FieldValues['denominacion'];
excel.Cells.Item[i+9,8]:=tinfgastomensual.FieldValues['cant'];
excel.Cells.Item[i+9,9]:= (tinfgastomensual.FieldValues['cant'] * tinfgastomensual.FieldValues['precio']);
excel.Cells.Item[i+9,10]:=tinfgastomensual.FieldValues['fecha'];
excel.Cells.Item[i+9,11]:=tinfgastomensual.FieldValues['intdest'];
excel.Cells.Item[i+9,12]:=tinfgastomensual.FieldValues['zonadest'];
label3.Caption := inttostr (i);
tinfgastomensual.next
end;
tinfgastomensual.First;
excel.Visible[0]:=true;
tinfgastomensual.Close;
infgastmens.close;
excel.Disconnect;
excel.Quit;
end;
Responder Con Cita