2011-02-09 113 views
5

Estoy usando Cake; al abrir el archivo de Excel en el navegador con una función de generar:PHPExcel en CakePHP: error - archivo de Excel incompatible o dañado

estoy recibiendo este error desde Microsoft Excel:

Excel no puede abrir la 'lista .xlsx Grupos' archivo porque el archivo formato o extensión de archivo no es válido. Compruebe que el archivo no se ha dañado y que la extensión del archivo coincide con el formato del archivo .

He intentado eliminar los espacios en el nombre de archivo después de descargarlo desde el navegador y lo abrí de nuevo, muestra el mismo error que el anterior. ¿Alguien experimentó esto y lo resolvió? o alguna pista de lo que está pasando?

Básicamente, el archivo Excel se abre pero está vacío debido al error anterior. He leído un problema similar que dice eliminar espacio al final de la etiqueta ?> en uno de los archivos del componente. Pero no sé qué archivo de componente ...

P.S. Estoy usando Microsoft Excel 2010, ¿podría ser esta la razón? ¿Funciona PHPExcel actualmente para un "Microsoft Excel 2010"?

Respuesta

2

El escritor PHPExcel Excel2007 debe generar archivos xlsx válidos que se puedan leer con Excel 2007, Excel 2010 y Excel 2003 con el paquete de compatibilidad. De hecho, hago la mayoría de mis pruebas con Excel2010 y Excel2003.

Lo primero que hay que comprobar es si hay caracteres espurios que se repiten en el archivo abriendo en un editor de texto. Si los hay, entonces esos textos pueden ser una guía para localizar el problema. En particular, tenga cuidado con los espacios o saltos de línea como los primeros caracteres en el archivo.

Un archivo xlsx es una colección comprimida de archivos xml, así que si no hay cadenas de texto obvias (junto a la firma PK) visibles en un editor de texto, intente descomprimirlo (usando lo que sea apropiado para su plataforma) . Eso puede dar otros mensajes de error que podrían ayudar a diagnosticar el problema.

Si está ejecutando en una plataforma Windows, entonces ha habido algunas versiones defectuosas de la extensión ZipArchive (php_zip.dll) que pueden causar este error. El último código SVN le permite usar PCLZip como una alternativa a ZipArchive.

Si aún tiene problemas, intente publicar en los foros de discusión de PHPExcel con todos los detalles.

1

Puesta en funcionamiento de composición vacía con las cabeceras adecuadas para la creación y/o bajar su archivo de Excel

Aquí es ejemplo con el archivo PDF

<?php 
header("Content-type: application/pdf"); 
echo $content_for_layout; 
?> 
0

¿Usted intentó esto?

<?php 
$file="test.xls"; 
$test="<table border=1><tr><td>Cell 1</td><td>Cell 2</td></tr></table>"; 
header("Content-type: application/vnd.ms-excel"); 
header("Content-Disposition: attachment; filename=$file"); 
echo $test; 
?> 

Gracias

0

fuerzo mis usuarios para descargar las hojas de Excel usando el siguiente código en mi Controlador (utilizo PHPExcel para generar informes sobre mis aplicaciones CakePHP):

header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="'.'myreportname.xls"'); 
header('Cache-Control: max-age=0'); 

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
$objWriter->save('php://output'); 

$this->render(false); 
  • $ objPHPExcel | Esta es mi hoja, un objeto PHPExcel()

  • $ this-> render (false); | Para evitar que algo se desactive para el navegador del cliente, asegurándose de no estar atornillando el archivo de Excel

Cuestiones relacionadas