Ver Mensaje Individual
  #3 (permalink)  
Antiguo 01/09/2011, 07:12
arenas_h
 
Fecha de Ingreso: diciembre-2008
Mensajes: 3
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema generando excel

Cita:
Iniciado por Fuzzylog Ver Mensaje
Deberíais verificar que las versiones de los jars de POI y sus dependencias son las mismas en desarrollo y en producción. Ese tipo de errores pueden suceder cuando se utilizan versiones diferentes.
Hola! gracias por tu respuesta, ya me había encargado de verificar eso y está todo igual, sin embargo sobreescribi los jars, y la falla persiste.
Por otra parte me parece curioso que si el ByteArrayOutputStream que mando a mostrar y que es lo que se descarga desde el navegador, el archivo me sale mal, pero si en el servidor ese mismo ByteArrayOutputStream lo escribo en un FileOutputStream si lo genera bien. En pocas palabras, todas las pruebas que hago me funcionan tanto en desarrollo como en producción, pero lo único que no me funciona en producción es cuando hago el "echo java_values($memoryStream->toByteArray());"

Aquí está el codigo con el que me da problemas, este es usando un objeto que yo cree y es el que me está dando problemas

Código:
<?php
     require_once("../java/Java.inc");
     header("Content-type: application/vnd.ms-excel");
     header("Content-Disposition: attachment; filename=archivo.xls");
     $reporte = new java("reportes.Compras");
     $memoryStream = new java("java.io.ByteArrayOutputStream");
     $memoryStream = $reporte->obtenerPorDiaExcel3();
     salida = new java("java.io.FileOutputStream","e:\\archivo.xls"); // aquí se genera el archivo en un directorio del server y todo va bien
     $memoryStream->writeTo($salida);
     $memoryStream->close();
     echo $reporte->obtenerPorDiaExcel3()->toByteArray(); //y esto es lo que se manda a descargar pero sale con el formato mal.
?>
y este un ejemplo, implementado de otra forma, que hace lo mismo y si funciona.
Código:
<?php
require_once("../java/Java.inc");

header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=archivo.xls");

$workbook = new java("org.apache.poi.hssf.usermodel.HSSFWorkbook");
$sheet = $workbook->createSheet("new sheet");
$row = $sheet->createRow(2);
$cell = $row->createCell(1)->setCellValue("HOLA MUNDO");

$memoryStream = new java("java.io.ByteArrayOutputStream");
$workbook->write($memoryStream);

$salida = new java("java.io.FileOutputStream","e:\\archivo.xls"); 

$memoryStream->writeTo($salida); // esta línea crea el fichero en un directorio del server y funciona bien
$memoryStream->close();
echo java_values($memoryStream->toByteArray()); //esta línea es la que me genera el archivo para descargar y en este caso si funciona
?>
Si necesitas alguna otra información adicional con gusto te la puedo suministrar.

Gracias nuevamente, saludos