• Publicidad

Problemas con el módulo Excel::Writer::XLSX

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Problemas con el módulo Excel::Writer::XLSX

Notapor hugo11ab » 2012-03-02 12:29 @562

¿Qué tal? Nuevamente solicitando de su valiosa ayuda.

El problema que tengo es que estoy generando un reporte en Excel utilizando el módulo Excel::Writer::XLSX.

El reporte se genera satisfactoriamente (.xlxs), pero al momento de dar clic en la liga con la cual descargo el reporte generado, se descarga un archivo .zip en lugar del xlsx; ya revisé la ruta de descarga y está correcta, no sé que pueda estar pasando o por qué se cambia la extensión a .zip

Lo raro es que si cambio la extensión xlsx a xls, ya no tengo problemas y el archivo se descarga sin ningún problema.

¿Dónde puede estar el error?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub reporte {
  2.     &decodificar_valores( $FORM{valores} );
  3.  
  4.     my $archivo;
  5.     $archivo = &rep_autorizado();
  6.  
  7.     #==================================================================
  8.  
  9.     my $table1 = new HTML::Table(
  10.         -cols    => 1,
  11.         -border  => 3,
  12.         -bgcolor => 0,
  13.         -width   => "50%",
  14.         -spacing => 1,
  15.         -padding => 1,
  16.         -style   => "border-collapse:collapse;"
  17.     );
  18.     $table1->setCell( 1, 1, "<font class=\"sBL3b\"><b>NOMBRE DEL ARCHIVO</b> </font>" );
  19.     $table1->setCell( 1, 2, "<font class=\"sBL3b\"><b>ABRIR</b> </font>" );
  20.     $table1->setCell( 1, 3, "<font class=\"sBL3b\"><b>OPCIONES</b> </font>" );
  21.     $table1->setRowBGColor( 1, "#003366" );
  22.  
  23.     $table1->setCell( 2, 1, "<font class=\"sBL4b\">$archivo</font>" );
  24.     $table1->setCell( 2, 2,
  25.         "<a href=\"../../../2012/reportes/$archivo\" target=\"_blank\"> <img src=\"/images/excel.jpg\" alt=\"Abrir Archivo\"></a>"
  26.     );
  27.     $table1->setCell( 2, 3,
  28.         "<button name=\"Regresar\"  type=\"button\" value=\"Regresar\" class='Bsbttn' onClick=\"window.location='$script_name?$url_param'\">Regresar</button>"
  29.     );
  30.     $table1->setRowAlign( 1, "CENTER" );
  31.     $table1->setRowAlign( 2, "CENTER" );
  32.  
  33.     print header;
  34.     &print_cabeza('');                 # esta funcion se encuentra en el (pm)
  35.     print start_multipart_form(
  36.         -action => $script_name,
  37.         -name   => 'form',
  38.         -id     => 'form'
  39.     );
  40.     $table1->print;
  41.     end_form();
  42.     end_html();
  43.     exit;
  44. }
  45.  
  46. sub grep_autorizado {
  47.  
  48.     my $archivo = "COMP_AUTORIZADOS_" . $FORM{clvgerencia} . "_$FORM{nc}" . ".xlsx";
  49.     $workbook = Excel::Writer::XLSX->new("../../../html/2012/reportes/$archivo");
  50.  
  51.     #left,right,bottom,top,bold,pattern,align,fg_color,color,size,valign,font,size,bg_color (color de la trama)
  52.     my $formato_texto  = &formato_texto5( 1, 1, 1, 1, 0, 1, "center", "white", "black", 8, "vcenter", "Arial", 0 );
  53.     my $formato_texto2 = &formato_texto5( 1, 1, 1, 1, 0, 1, "left",   "white", "black", 8, "vcenter", "Arial", 0 );
  54.  
  55.     $color3 = &formato_color( 27, 2, 2, 0, 0 );
  56.     &enca_rep_excel("MOV. AUTORIZADOS");
  57.     &barra_detalle( "$nombre_programa", "$FORM{txtGerencia}" );
  58.  
  59.     #$fg_color,$left,$right,$bottom,$top
  60.     $color2 = &formato_color( 41, 2, 2, 0, 0 );
  61.     $color3 = &formato_color( 41, 2, 2, 0, 0 );
  62.     $color4 = &formato_color( 41, 0, 0, 0, 0 );
  63.     $color5 = &formato_color( 41, 0, 0, 0, 0 );
  64.  
  65.     #los parametros que se mandan para el formato de moneda son
  66.     #($left,$right,$bottom,$top,$bold,$pattern,$fg_color,$size);
  67.     $moneda  = &moneda_formato( 2, 2, 1, 1, 0, 1, "white", 10 );    #la rutina esta en este mismo reporte
  68.     $moneda2 = &moneda_formato( 2, 2, 1, 1, 1, 1, 22,      10 );    #la rutina esta en este mismo reporte
  69.  
  70.     $workbook->close() or die "Error no puedo cerrar el Archivo: $!";
  71.     return $archivo;
  72.     exit;
  73.  
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2012-03-02 13:06 @587, editado 2 veces en total
Razón: Formateado de código con Perltidy y poner marcas Perl
hugo11ab
Perlero nuevo
Perlero nuevo
 
Mensajes: 77
Registrado: 2006-07-22 23:24 @016

Publicidad

Re: Problemas con el módulo Excel::Writer::XLSX

Notapor explorer » 2012-03-02 13:05 @587

El formato xlsx es un fichero XML comprimido en zip.

El problema está en el servidor web, que no sabe qué cabecera MIME debe enviar cuando se encuentra con esa extensión. Entonces, le pregunta al sistema operativo si sabe qué tipo de archivo es. Y este le responde que parece que es un archivo zip, así que eso es lo que indica el servidor web en la cabecera.

Debes agregar ese tipo mime a tu sistema.

Por ejemplo, en mis servidores Debian, en el fichero /etc/mime.types aparece esta línea:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet         xlsx
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problemas con el módulo Excel::Writer::XLSX

Notapor hugo11ab » 2012-03-02 13:47 @616

Gracias, explorer, como siempre muy atinado en tus respuestas. Utilizo Fedora y agregué la línea que me indicaste al fichero mime.types, reinicié el Apache y se solucionó el problema.

¡¡ Gracias !!
hugo11ab
Perlero nuevo
Perlero nuevo
 
Mensajes: 77
Registrado: 2006-07-22 23:24 @016

Re: Problemas con el módulo Excel::Writer::XLSX

Notapor explorer » 2012-03-02 14:56 @664

El problema es usar Fedora, naturalmente.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problemas con el módulo Excel::Writer::XLSX

Notapor hugo11ab » 2012-03-02 15:28 @686

Gracias por la recomendación, probaré con el Debian 6.

¡¡ Saludos !!
hugo11ab
Perlero nuevo
Perlero nuevo
 
Mensajes: 77
Registrado: 2006-07-22 23:24 @016


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados