FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
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; |
#2
|
||||
|
||||
¡Hola a todos!
La automatización OLE de Office es lenta debido a lo espeso de sus interfaces. Es por ello que algunos fabricantes se han dado a la tarea de crear bibliotecas de componentes para la exportación directa a archivos .xls, sin pasar por OLE, como es el caso de Developer Express con su súper poderosa rejilla TcxGrid (Quantum Grid). Aunque existen muchas otras soluciones en el mercado. Un abrazo ligero. Al González. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
excel a delphi, como mostrar columnas de excel | Vyckso | Servers | 2 | 13-08-2007 12:38:08 |
Procedure en Firebird lento o IbQuery lento | capo979 | Firebird e Interbase | 14 | 17-07-2007 21:35:36 |
MDI lento | tomasgarcia | OOP | 1 | 27-07-2004 20:28:05 |
lento | carlomagno | Firebird e Interbase | 4 | 02-07-2004 13:48:08 |
Cuando imprimen en excel o word se pone lento el sistema | tulio | Varios | 0 | 07-04-2004 14:56:37 |
|