![]() |
Optimización en exportación a Excel
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:
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 |
Así viendo el código por encima, no parece que se pueda hacer muchas cosa en él para optimizarlo.
Primero hace un recorrido por los títulos y luego para cada fila/registro (WHILE) recorre las columnas (FOR) para obtener los valores. No veo mucha posible mejora, salvo que intentes utilizar Threads. Pero en ese caso no hablamos de reducir el tiempo, sino que al utilizar threads, lo que consigues es hacerlo en un proceso "secundario" y no "bloquear" la aplicación principal. Lo otro que se me ocurre (que esto sí puede que reduzca el tiempo), es que intentes conectar a excel utilizando ADO, en lugar de TExcelApplication. Es decir, puedes configurar una conexión a Excel utilizando el TADOconnection, de forma que la hoja de Excel se consulta como una tabla. En los foros ya hemos hablado del tema (ADO+Excel); Busca mensajes antiguos para que puedas ver ejemplos de conexión y diría que en el FTP puedes encontrar incluso ejemplos de ello. Si no encuentras nada, dilo. |
Hola,
tal como lo planteas abriendo el excel como un objeto OLE no se puede acelerar. El tiempo se va en la sincronización de la exportación de la aplicación con el excel, celda a celda. Si sólo trabajas con una pestaña, puedes exportar a csv y luego cargar el dato en excel. Si no, las alternativas que tienes son: - utilizar alguna libería que genere los ficheros excel directamente ( las hay gratuitas aunque no sé cual recomendarte) - utilizar las hojas excel como tablas tal y como te indica Neftalí. La diferencia es sustancial. Un saludo |
Solucion a Excel lento
Mira en la parte final de este post respondi esa pregunta, espero te sirva:
https://www.clubdelphi.com/foros/showthread.php?t=94464 |
Componentes de FireSoft
Hola Novato_Erick
En esta página https://torry.net/authorsmore.php?id=6057 podras bajar unos componentes que te puedan ayudar (Autor:Federico Firenze). FireSoft ExportSuite V.1, son Free. Talvez te ayuden a ser mas rápido la exportación. Saludos. |
Cita:
Tenias razón marcos utilizando el Componente ADO la exportación fue en dos pestañazos :D. Esto fué lo que implementé Gracias a ustedes:
como coloque en el comentario: "No he logrado poner los encabezado" de la tabla :confused::confused::confused: igual está funcional mejoraré y al términar pondré el código final. Saludos; novato_erick |
Se me olvido poner que en mi ADODataSetInforme le puse en la propiedad ConnectionString: Provider=Microsoft.Jet.OLEDB.4.0; Mode=ReadWrite;Extended Properties=Excel 8.0;Persist Security Info=False
Saludos; novato_erick |
Cita:
Agregar encabezados en sencillo, por ejemplo agrega esto mas o menos así:
|
Cita:
Ohhh gracias... Quedo de anillo al dedo.^\||/^\||/^\||/ Saludos y Bendiciones por su ayuda. novato_erick |
La franja horaria es GMT +2. Ahora son las 07:50:17. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi