Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Problema exportando a Excel 2007 (https://www.clubdelphi.com/foros/showthread.php?t=67183)

rolandoj 04-04-2010 05:34:31

Problema exportando a Excel 2007
 
Hola a todos,

Espero que puedan ayudarme.

Tengo una aplicación hecha en delphi 5 que exporta numerosos reportes formateados a Excel 97-2003, usando OLE. Se migró un conjunto de equipos a Excel 2007 y en ellos ninguna exportación funciona.

Depurando, encontré que la aplicación falla tan pronto se invoca la inicialización OLE. Investigando, parece ser que hay que activar una variable global que se controla con .NET. Asumiendo que ese sea el problema (por todo lo que he leído, creo que así es), y dado que desde Delphi 5 no tengo acceso directo a manejar cosas de .NET, mi pregunta es:

Hay alguna forma simple de poder reactivar la exportación normal a Excel?. Quizás algún componente ?

Para claridad, las condiciones son:

1. Reescribir todos los reportes para exportar a un archivo Excel sin usar OLE es mala opción, implicaría un costo muy alto tanto en lo ecónomico como en tiempo.

2. Por el tema del licenciamiento, hay que mantener la exportación actual a Excel 2003 y anteriores; es decir, no sirve una solución que solo exporte a Excel 2007

3. Migrar a Delphi 2009 o 2010, aparte del costo de la licencia, puede crear un problema peor, ya que en 2009 el tipo String pasó a interpretarse como un "string Unicode" y, según creo (corrijanme si estoy equivocado), sigue siendo así en Delphi 2010. Hay diversos algoritmos complejos que se optimizaron en el supuesto de que un caracter es de longitud 1; sería muy costoso revisar todo para hacer una migración.

Agradezco mucho cualquier ayuda porque hasta ahora todas las opciones de solución que conozco son bastante malas.

mRoman 07-04-2010 05:47:18

Exportar sin OLE
 
Hola buenas noches.

Fijate que yo estuve con ese mismo problema, bueno mas o menos. Mi bronca fué que cambiamos de S.O (Linux) y pues ahi no esta instalado el MS Office, asi que lo que hice fué conseguirme un componente que me exporte a Excel sin tener excel instalado....talvez te ayude, ya que no esta sujeto a ninguna version del Office, en este hilo dejé una link al componente q te menciono.

Lo unico que hice fue hacer algunos cambios a mi codigo original y adecuarlo al de este componente, que la verdad no fueron muchos....

Saludos, espero haberte ayudado.

rolandoj 07-04-2010 14:41:56

Muchas gracias. Quizás podría usarse
 
Cita:

Empezado por mRoman (Mensaje 359569)
Hola buenas noches.

Fijate que yo estuve con ese mismo problema, bueno mas o menos. Mi bronca fué que cambiamos de S.O (Linux) y pues ahi no esta instalado el MS Office, asi que lo que hice fué conseguirme un componente que me exporte a Excel sin tener excel instalado....talvez te ayude, ya que no esta sujeto a ninguna version del Office, en este hilo dejé una link al componente q te menciono.

Lo unico que hice fue hacer algunos cambios a mi codigo original y adecuarlo al de este componente, que la verdad no fueron muchos....

Saludos, espero haberte ayudado.

Hola,

Ante todo, muchas gracias por el interes. Supongo que te refieres al componente TXLSFile que es el que al final de tú hilo mencionas como solución.

En principio, para casos futuros, la solución de generar un archivo Excel independiente, en lugar de OLE, es la que ya habíamos decido usar. Es decir, compartimos plenamente la solución que adoptastes para tú problema. Sin embargo, para el caso presente, la situación es diferente

La verdad, tendría que revisar TXLSFile con calma; ya que, entiendo que tú manejabas una plantilla; pero, en mi caso, son bastantes plantillas y los cambios se multiplicarían. Por otra parte, la versión demo, disponible en el link que dejas, trae solo los DCU, y eso es un problema porque mi desarrollo está en Delphi 5; pero, el demo no contiene Dcu de Delphi 5.

Por el momento, mi esperanza es localizar alguna unidad que sea capaz de habilitar la configuración global de .NET que es la que, según he leído, genera el problema con el CreateObject. Lo veo dificil pero el peor intento es el que no se hace.

En todo este caso, hay dos cosas lamentables: Una, que por parte de Delphi no se haya generado una solución nativa a este problema de portabilidad; la otra es que Microsoft haya generado ese problema; que no es poca cosa porque casi todo el desarrollo antiguo se basaba en OLE. Bloquear el CreateObject es hacer incompatibles todos los desarrollos y obligar a recodificar sin ningún tipo de beneficio para el programador.

manuc 22-04-2010 14:05:39

Hola rolandoj,

Ahora mismo no sabría decirte donde puede estar el problema.

En algunas aplicaciones, tengo exportaciones a Excel (con Delphi 6) y funcionan correctamente tanto office 97...2003 cómo con 2007.

Esto te puede sonar muy laborioso, pero también es posible crear el fichero de excel directamente.

Si coges un fichero .xlsx y le cambias la extención a .zip, podrás descomprimir el fichero y ver la estructura interna que tiene.

Para crear tu exportaciones no tendrías que crear toda la estructura interna del fichero, valdría con crar ciertos XML's y ya está.

Un saludo.

rolandoj 22-04-2010 19:13:24

Gracias; pero
 
Cita:

Empezado por manuc (Mensaje 361530)
Hola rolandoj,

Ahora mismo no sabría decirte donde puede estar el problema.

En algunas aplicaciones, tengo exportaciones a Excel (con Delphi 6) y funcionan correctamente tanto office 97...2003 cómo con 2007.

Esto te puede sonar muy laborioso, pero también es posible crear el fichero de excel directamente.

Si coges un fichero .xlsx y le cambias la extención a .zip, podrás descomprimir el fichero y ver la estructura interna que tiene.

Para crear tu exportaciones no tendrías que crear toda la estructura interna del fichero, valdría con crar ciertos XML's y ya está.

Un saludo.

Hola,

Muchas gracias por la ayuda; pero, aunque es técnicamente interesante, no es una solución práctica, ya que demanda mucho tiempo.

Esa posibilidad ya le hemos considerado, sobre la base de recodificar usando otra herramienta que genere el archivo Excel a disco, y en últimas podría ser lá única solución disponible; pero, antes se trata de agotar la posibilidad de conseguir alguna solución que no requiere recodificar.

Lo triste del caso es que esa limitación está afectando negativamente la valoración del sistema, y si efectivamente el único remedio resulta ser recodificar, pesará muy negativamente en esa valoración.

Saludos


La franja horaria es GMT +2. Ahora son las 08:18:11.

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