[SOLUCIONADO] Problemas con la exportación a Excel

Estimados amigos, tengo problemas al exportar a excel un cuadro. Dicho cuadro se visualiza perfecto en la aplicación, la exportación a pdf también sale bien, pero la exportación a excel me devuelve un monton de basura (simbolitos y demás yerbas).
No creo que sea el tamaño porque debe tener unas 3000 lineas, no más.

pienso que puede ser algún caracter extraño, pero no lo veo.

¿Alguien tuvo un problema similar?

Les agradecería si tienen alguna idea al respecto.

Un cordial saludo.

Hola, estoy usando la versión 1.5.6 de Toba, me pasó lo mismo.
Aunque no sé porqué!

Lo que me pasó fue lo siguiente:

  • Una exportación a excel que funcionaba.
  • Un cuadro que se llenaba con una función que contenía una consulta declarada en archivo1, $cuadro->set_datos(archivo1::consulta());
  • Bien, se me ocurrió cambiarlo de archivo, que estuviera en archivo2, dentro de otra carpeta.
  • Empezó a dar basura como te pasó a vos (sintaxis de archivo2… igual al otro, lo renombre, lo cambié de carpeta y renombré la clase, nada que indique que podía haber un error).
  • Volví todo para atrás, funciona.
  • Copié el archivo original a la nueva carpeta… sigue funcionando (*).
  • Si vuelvo a hacer los pasos previos… deja de funcionar…

Ah, en el camino, nunca toqué el código de la exportación en excel dentro del CI donde estaba el cuadro (solo la llamada).

Evidentemente es un problema de código, pero por una cuestión de tiempo, simplemente salió funcionando con la opción marcada con el (*).
Me interesará la respuesta y la solución!!! Ahora por el momento, espero que te sirva mi comentario!

Lamentablemente: no.
Probé cambiar de archivo la consulta, y no hay caso.

Vamos a ver si por ahí alguno de los muchachos le encuentra la vuelta.

Gracias de todos modos.

Hola Gente,

lo que estan teniendo es un problema de codificacion:

@Claudio: ¿Los datos salen derecho viejo de la base y van al cuadro?, ¿en el medio le agregas formato propio o lo concatenas a un string?.
Es decir, pasa por algun archivo PHP que le pueda agregar algo, o asi como viene el arreglo de la consulta va derecho para el cuadro?.

@Martin:

El encoding del editor era el mismo?, algo que muchisimas veces uno da por sentado no es asi, tienen que mirar con que codificacion esta trabajando su editor, si tienen la mitad en UTF-8 y otra mitad en ISO, tarde o temprano se van a encontrar con esto.

La prueba mas cabal, copiaste el archivo original y funcionó, eso quiere decir que el copy-paste del editor te estaba rompiendo la salida.

Saludos

Hola Richard.
El recordset va derecho al cuadro así como viene de la consulta. Lo único que hace el php es setear el título del cuadro con dos valores variables. De todos modos, probé eliminando esas lineas y sigue igual, me muestra basura o la pantalla completamente en blanco.

Considerando lo que le decias a Martín, probé eliminando los archivos php y crearlos de nuevo desde mi editor (los habia creado otra persona), y no hay caso.

Sigo pensando.

Gracias por tu atención.

No pude volver a probar lo anterior.
En mi caso, solo fui yo, y con el mismo Editor… (Zend, aunque puede andar por ahí el Notepad++ metido).
A mi me sono que podía ser algo con el largo del nombre de la carpeta, el nombre del archivo y el nombre de la función (todos medios larguitos… eso si, altamente explicativos!!!).
Y si reescribís la función en tu editor normal?, no copiar pegar… pico y pala…
En cuanto pueda, pruebo si logro algo por este lado.

A mi me paso, y era que en el código del cuadro, tenía un print_r o un echo, y se me había olvidado quitarlo o comentarlo.

usaba para mostrar el resultado de la consulta; puede ser eso mismo.

Hola Claudio,

Si va derecho entonces pasa por otro lado el asunto, esto te pasa con alguna columna en particular o todo el excel esta completamente roto?.

Considerando lo que le decias a Martín, probé eliminando los archivos php y crearlos de nuevo desde mi editor (los habia creado otra persona), y no hay caso.

No era necesario que eliminaras los archivos, si hay algun simbolo extraño (por la codificacion) suele salir en el HTML tambien ya que es algo que no se interpreta(esta fuera de los tags php), lo otro es ir probando con un editor bien simple que te permita cambiar el encoding en uso, en cuanto cambias la codificacion a otra suelen verse al toque esos caracteres extra.

Saludos

Richard.
No me preguntes como, posiblemente haya sido el hecho de haber regenerado los archivos php combinado con la reiniciación del servidor, pero hoy, entré a probar para retomar la lucha, y funciona perfectamente.

Las acciones que llevé a cabo son las que te he descripto en los posts anteriores. Lo único que pasó luego de regenerar los php (y que seguía sin funcionar), fue apagar los servidores durante la noche y encenderlos esta mañana.

Los php habian sido editados, previamente, con el dreamweaver que creo que por defecto codifica con Westerns (Latin1), los regeneré con phpDesigner con codificación de archivo por defecto ANSI.

No se si te servirá para deducir lo ocurrido, espero que sí.

Un cordial saludo.

Acá estoy de vuelta. Por algún motivo misterioso, vuelve a fallar mostrándome una página en blanco en el navegador.
Adjunto lo que coloca en la barra de navegación a ver si ayuda:

http://192.168.10.10/proora/1.0/aplicacion.php?ah=4db984f0e8d66&ai=proora||1000593&tcm=previsualizacion&ai=proora||1000593&ts=vista_excel&tsd=proora||1001259,

Me llama la atención especialmente porque ninguna otra exportación a excel arma una página, sino que arranca el diálogo para abrir o guardar el resultado, y además, el hecho de que termine en una coma, como si le faltara algo.

¿Podrá ser un problema de memoria del servidor?

Hola Claudio,

En realidad la coma esa queda ahi debido a la forma en que se ‘concatenan’ los ids de los objetos a los cuales se les pide el servicio.
No afecta para nada el funcionamiento.

¿Podrá ser un problema de memoria del servidor?

Podria ser, igualmente esto lo podrias probar devolviendo un solo registro y viendo si funciona.
Otra cosa es mirar directamente en los logs de apache luego de ejecutar la exportacion, ahi deberia decir si hubo algun inconveniente, eso si es que el codigo fuente de la misma pagina no dice nada, ojo que hay veces que el error queda entre los tags de JS y no es mostrado.

Saludos

Hola gente!
Este tema fue tratado en http://comunidad.siu.edu.ar/index.php?topic=1147.0 y es un problema que se plantea en repetidas oportunidades. Una posibilidad es justamente que alguno de los archivos PHP que intervienen en la salida esté enviando caracteres (como podría ser un espacio en blanco) luego del tag “?>”. Les recomiendo controlar la subclase del CI, el archivo donde está la consulta SQL, etc.
Saludos, Florencia.

Estimados amigos, encontramos el problema.
Hubo que tocar el php.ini en la entrada de memoria limit_max. Aumentándola se solucionó el problema.

Hago una aclaración: tuvimos los dos problemas; un xls roto que mostraba basura, ese se habrá arreglado cuando regeneré los archivos .php. Luego surgió el otro, el que me mostraba una página en blanco. Ese se solucionó con el aumento de memoria que menciono al principio.

Aclaro que uso tres servidores:

  • Servidor para proyectos en desarrollo (aquí no hay datos, y es donde tuve que aumentar la memoria)
  • Servidor para datos de prueba
  • Servidor para datos y programas en producción.

Un cordial saludo a todos, gracias por vuestra atención, y espero que este hilo les sea de alguna utilidad.

Hola Claudio,

Me alegro que hayan podido solucionar este problema.

Luego surgió el otro, el que me mostraba una página en blanco. Ese se solucionó con el aumento de memoria que menciono al principio.

Aclaro que uso tres servidores:

  • Servidor para proyectos en desarrollo (aquí no hay datos, y es donde tuve que aumentar la memoria)

Ojo al piojo Claudio, tenian demasiado bajo el limite de memoria?, recorda que esto es un parche temporario, ya que en algun momento se puede alcanzar nuevamente el limite.
Lo mejor es tratar de hacer que los usuarios reduzcan al minimo estrictamente necesario la cantidad de datos a exportar.
Si tuviste que incrementar el limite en desarrollo, es probable que debas hacer lo mismo en produccion a futuro.

Saludos

Gracias por tus comentarios Richard.
Te cuento: El servidor de producción ya tiene la memoria bien alta, el de producción es una PC mejorada (que tenemos que mejorar más, ya nos lo prometieron), por eso los muchachos le dejaron baja la memoria, ya que siempre trabajamos con volúmenes reducidos de datos. Este caso fue especial porque sí o sí tenía que mostrar todo lo liquidado de sueldos en un mes, y aca eso es algo grosso.

Un cordial saludo.