Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Servers
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 04-04-2010
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 17
rolandoj Va por buen camino
Unhappy 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.
Responder Con Cita
  #2  
Antiguo 07-04-2010
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
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.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #3  
Antiguo 07-04-2010
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 17
rolandoj Va por buen camino
Muchas gracias. Quizás podría usarse

Cita:
Empezado por mRoman Ver Mensaje
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.
Responder Con Cita
  #4  
Antiguo 22-04-2010
manuc manuc is offline
Miembro
 
Registrado: abr 2010
Posts: 165
Poder: 14
manuc Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 22-04-2010
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 17
rolandoj Va por buen camino
Gracias; pero

Cita:
Empezado por manuc Ver Mensaje
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
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
Caso curioso exportando a excel desde una rejilla. marcoszorrilla Varios 12 04-03-2009 23:02:22
Exportando a Excel celdas con Formato ruedabeat2003 Varios 2 13-08-2008 00:46:21
Exportando a Excel con DBGridExcelExport BlueSteel Varios 5 07-02-2008 19:11:30
Ajuste de líneas exportando a Excel Alexis7788 Varios 0 11-12-2007 11:57:38
Delphi y Excel 2007 rolandoj Servers 4 05-12-2007 00:26:14


La franja horaria es GMT +2. Ahora son las 18:23:37.


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