Foros del Web » Programación para mayores de 30 ;) » Programación General »

Generar Excel perl/cgi

Estas en el tema de Generar Excel perl/cgi en el foro de Programación General en Foros del Web. Hola Amigos Estoy tratando de solucionar un problema al generar un excel que al parecer es mas grande de lo habitual. Es una aplicación que ...
  #1 (permalink)  
Antiguo 10/08/2010, 14:44
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 19 años, 6 meses
Puntos: 0
De acuerdo Generar Excel perl/cgi

Hola Amigos

Estoy tratando de solucionar un problema al generar un excel que al parecer es mas grande de lo habitual. Es una aplicación que funcionaba bien hasta que los datos han crecido en volumen. Para generarlos usa Spreadsheet::WriteExcel, el punto es que al ejecutar la accion de generarlo, esta queda esperando sin mostrar ningun resultado. IIS con sqlserver 7, no tengo ninguna posibilidad de corregir nada en estas dos ultimas aplicaciones.

Leyendo encontre la funcion set_tempdir()
http://search.cpan.org/~jmcnamara/Sp...#set_tempdir()

Saludos
__________________
Dios es mas grande que tu problema :-)
  #2 (permalink)  
Antiguo 10/08/2010, 14:53
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 524
Antigüedad: 18 años
Puntos: 11
Respuesta: Generar Excel perl/cgi

El módulo tiene un límite: 7Mb de datos BIFF.

Pero se puede superar, con la ayuda del módulo OLE::Storage_Lite.

Lo tienes explicado en la sección LIMITATIONS del módulo Spreadsheet::WriteExcel.

Hay un ejemplo en el programa examples/bigfile.pl.
__________________
JF^D Perl Programming en Español
  #3 (permalink)  
Antiguo 10/08/2010, 15:21
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Generar Excel perl/cgi

Gracias por tu respuesta.
bueno como te contaba el código ya esta echo, es decir, la rutina ya esta recontra probado, sin embargo lo que no encuentro es un ejemplo de dicha función. Yo hice algo así, a todo esto el código es bastante extenso.


Código HTML:
use File::Temp
my $workbook1 = Spreadsheet::WriteExcel->new(archivo.xls"); 
 $workbook1->set_tempdir('c:\archivosdeprograma\TEMP');
#muchos de estos:
 $workbook1->sheets($jj)->write(++$i,0,++$zz,$body_h);
$workbook1->close();

Y aqui de partida me envia el error por use File::Temp, que esta en el tutorial
"SBMP::XSesion=HASH(0x511e3a4)" is not exported by the File::Temp module

al quitarselo: solo genera un excel vacío.


Un dato curioso es que al script al quitarle la linea del "set_tempdir", no graba en el archivo hasta un tiempo de +- 5 minutos, algo así como que se lleno el buffer y envió lo que tenia. Hasta ahora el archivo de salida pesa mas menos 24Kb


Gracias de nuevo.
__________________
Dios es mas grande que tu problema :-)
  #4 (permalink)  
Antiguo 11/08/2010, 05:02
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 524
Antigüedad: 18 años
Puntos: 11
Respuesta: Generar Excel perl/cgi

¿Has hecho lo que pone en la sección de tempdir()? ¿Lo de agregar -w al script para ver si da un aviso?

Dice que el principal problema es porque IIS intenta escribir en un directorio donde no tiene permisos de escritura.

Muy curioso lo que dice al final, que también hay un límite en el número de ficheros temporales que se pueden crear en Windows, con tmpdir, unos 800.
__________________
JF^D Perl Programming en Español
  #5 (permalink)  
Antiguo 11/08/2010, 09:44
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 19 años, 6 meses
Puntos: 0
De acuerdo Respuesta: Generar Excel perl/cgi

Hasta ahora, encontre un par de ejemplos que mas menos el codigo es asi:

Código HTML:
use Spreadsheet::WriteExcel::Big;
my $workbook = Spreadsheet::WriteExcel::Big->new("arch.xls");
   $workbook->set_tempdir('c:\\TEMP');
$worksheet = $workbook->add_worksheet('Doc'); 
               $worksheet->write('C8',"Form", $header);
                $worksheet->write('D8',"Cod.", $header);
$workbook->close();
este codigo, (+-), genera el xls, pero con el mismo resultado, incluso al revisar la carpeta TEMP, se ve que ha dejado un par de archivos que luego elimina, pero el tamaño del final no supera los 24KB....


Bueno eso. Gracias nuevamente
__________________
Dios es mas grande que tu problema :-)
  #6 (permalink)  
Antiguo 11/08/2010, 09:57
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 19 años, 6 meses
Puntos: 0
De acuerdo Respuesta: Generar Excel perl/cgi

Hay alguna forma de crear el archivo, llenar una parte, luego volver a abrirlo, continuar con otra parte y asi hasta terminar ¿?


Gracias.
__________________
Dios es mas grande que tu problema :-)
  #7 (permalink)  
Antiguo 11/08/2010, 22:27
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 524
Antigüedad: 18 años
Puntos: 11
Respuesta: Generar Excel perl/cgi

Cita:
Iniciado por maurimono Ver Mensaje
este codigo, (+-), genera el xls, pero con el mismo resultado, incluso al revisar la carpeta TEMP, se ve que ha dejado un par de archivos que luego elimina, pero el tamaño del final no supera los 24KB....
Si el tamaño final del fichero debería ser 24Kb, no te hace falta ningún módulo ni truco para usar ficheros más grandes. En la documentación pone muy claro que el límite son los 7Mb. Si no llegas a esa cifra, no te hace falta nada más.

El problema puede estar en otro sitio. ¿No te dice nada al ponerle el -w?

O, si lo entendí mal, quieres decir que el fichero, erróneo, no pasa de los 24Kb. Si hasta ahora no ha dado problemas, entonces sí que puede ser el tamaño excesivo, y entonces sí que necesitas los trucos comentados antes.

No se me ocurre nada... salvo probarlo en otro sistema operativo.
__________________
JF^D Perl Programming en Español
  #8 (permalink)  
Antiguo 16/08/2010, 08:26
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 19 años, 6 meses
Puntos: 0
De acuerdo Respuesta: Generar Excel perl/cgi

Parace que todo apunta a un tema de tiempo de espera en IIS, un compañero de trabajo me indica que la BBDD que usa el sistema es SqlServer 7, la cual no mata las sesiones tomadas a pesar que se desconecte el usuario. Lo otra es alguna configuracion propia del IIS.

Gracias por tu respuesta.
__________________
Dios es mas grande que tu problema :-)
  #9 (permalink)  
Antiguo 17/08/2010, 16:05
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Generar Excel perl/cgi

Esto puede ser un poco de off topic, pero es a modo de comentario, a menos que necesites diseñar en excel por lejos te aconsejo que uses un archivo tabulado o separado por comas, inclusive si lo guardas como extensión xls tambien funciona, por otro lado el formato de excel 2007 es básicamente xml por lo que nos vas a tener esos problemas.

Etiquetas: excel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:41.