Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Providers
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-07-2017
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Debo realizar una exportación de datos a Excel (*.xlsx)...

...pero tengo algunos problemas.

¡Buen día/tarde/noche!, requiero información y ayuda para resolver una pequeña particularidad.

Tengo un programa que debe realizar una exportación de datos a Excel (*.xls) , de tres columnas obtenidas de SQL Server. Actualmente lo realiza cómodamente con ésta línea de conexión:
Código:
cConn := "DBQ="+cNomArc + ";Driver={Microsoft Excel Driver (*.xls)};ReadOnly=0;MaxScanRows=0;FirstRowHasNames=1;DriverId=278"
Donde cNomArc es el nombre del archivo que contendrá los nuevos datos.

Probé con la línea:
Código:
cConn := 'Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ='+cNomArc+';Mode=ReadWrite;ReadOnly=False;Extended Properties="Mode=ReadWrite;ReadOnly=False;HDR=YES"'
recomendada en alguno de los sitios de desarrolladores que frecuento, y además de obtener un archivo ridículamente pequeño (7 Kb), no es legible para Excel marcando "Excel no puede leer el archivo 'x' porque el formato de la extensión...", ya saben...

Y ahora el problema es que necesito exportarlo a *.xlsx para "modernizar" la salida de los datos; en el otro extremo (es decir, la importación de datos) tengo ésta conexión plenamente funcional y leyendo cómodamente archivos *.xlsx:
Código:
cConn := 'Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ='+cNomArc+';Extended Properties="Mode=Read;ReadOnly=True;HDR=YES"'

Obviamente, he probado con varias conexiones la exportación, hasta que me topé con una recomendación emanada directamente de Microsoft donde dice que la exportación DEBE NECESARIAMENTE ser en formato Excel 97-2003 *.xls para ser viable..., pero debo exportarlo en *.xlsx funcional si deseo continuar con el diseño del sistema...

¿Alguien tendrá alguna idea que pueda servirme? Agradezco de antemano su paciencia y comprensión.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #2  
Antiguo 06-07-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Podrías intentar acceder a Excel vía OLE, tú sabes, usando OleVariants y COM y llenando las celdas una a una. El problema ahí sería la velocidad. Si es una tabla muy grande podría ser algo lento. Incluso, se me ocurre que podrías poner los datos en CSV en el portapapeles y luego, mediante OLE, pegar el contenido en el archivo xlsx.

LineComment Saludos
Responder Con Cita
  #3  
Antiguo 06-07-2017
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
...Podrías intentar acceder a Excel vía OLE, tú sabes, usando OleVariants y COM ...
Efectivamente, el tema de la velocidad es crucial. Si por exportar 2,000 registros se tarda en el método actual casi un minuto, me lo reclaman cada vez que pueden...

Gracias.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #4  
Antiguo 06-07-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Un bucle recorriendo un dataset y enviando a un fichero de texto del tipo csv es rapidísimo y muy simple de hacer. ¿No te viene bien ese formato?
Responder Con Cita
  #5  
Antiguo 06-07-2017
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Un bucle recorriendo un dataset y enviando a un fichero de texto del tipo csv es rapidísimo y muy simple de hacer. ¿No te viene bien ese formato?
No, Casimiro. Lamentablemente para mí, DEBE SER NECESARIAMENTE EN XLSX..., el caso del CSV ya está contemplado desde el principio de los tiempos de éste programa (en el que estoy trabajando)...
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #6  
Antiguo 06-07-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Acabo de pegar 2600 registros en formato CSV en una hoja xlsx en un abrir y cerrar de ojos. A ese tiempo (abrir y cerrar de ojos) únicamente tendrías que añadir el tiempo de formar los datos CSV (debe ser imperceptible) crear el archivo y guardarlo. Te aseguro que tardará menos de un minuto y el archivo final estará en formato xlsx. Lo del CSV en memoria el cliente ni lo sabrá.

LineComment Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Modificar un documento MS EXCEL 2003 [.xls] o 2007 [.xlsx] adrall Conexión con bases de datos 0 02-05-2016 15:12:11
Exportacion datos Excel 2007 hlbarragan Varios 2 22-09-2011 14:44:41
exportar datos de Dataset a XLSX nextor Conexión con bases de datos 3 20-12-2010 18:43:22
Tutorial Paso a Paso Exportación de datos de TQuery a Excel lKinGl Servers 0 06-11-2008 00:10:07
Exportación de datos de Excel a Tablas Paradox Mone Conexión con bases de datos 1 31-10-2005 21:15:40


La franja horaria es GMT +2. Ahora son las 14:25:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi