Estoy tratando de descargar archivos de Excel (xlsx) usando PHPExcel
de la siguiente manera.Advertencia de "contenido encontrado ilegible para Excel" al abrir archivos Excel creados con PHPExcel
require_once("../../phpExcel/Classes/PHPExcel.php");
require_once("../../phpExcel/Classes/PHPExcel/IOFactory.php");
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setCreator("Tiny")
->setLastModifiedBy("Tiny")
->setTitle("Office 2007 XLSX Test Document")
->setSubject("Office 2007 XLSX Test Document")
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");
$objPHPExcel->setActiveSheetIndex(0);
$sheet=$objPHPExcel->getActiveSheet();
$sheet->setCellValue('A1', 'Hello');
$sheet->setCellValue('B2', 'world!');
$sheet->setCellValue('C1', 'Hello');
$sheet->setCellValue('D2', 'world!');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="test.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
Funciona pero cuando intento abrir el archivo de Excel, se solicita una confirmación en un diálogo de conformar.
Excel encontró contenido ilegible en 'test.xlsx'. ¿Desea recuperar el contenido de este libro de trabajo? Si confía en el origen de este libro de trabajo , haga clic en Sí.
También probé a cambiar la cabecera de la siguiente manera
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;
header("Content-Disposition: attachment;filename=test.xlsx");
header("Content-Transfer-Encoding: binary");
Todavía pide confirmación de la misma. ¿Qué estoy haciendo mal aquí, por favor?
Abra el archivo en un editor de texto, y mire para ver si hay algún espacio en blanco al principio o al final del archivo, o cualquier mensaje de error obvio visible. –
En el editor de texto (Bloc de notas), se muestra algo como esto 'PK ¾ @ G'D²X ð [Tipos_del_contenido] .xml" MNÃ0 ... ÷ œ "ò% nY" švAa \t • (0ö¤ ± êØ-gúw {& i ‰ @ ÕnbEö {ßøyìÑdÛ¸l \t mð ¥ '× ÁX¿ (ÅÛü) ¿' òF¹à¡; @ 1_æ »~ ± Øc) j ¢ x /% ê ... Eày| © QÄ¿i! £ ÒKμ y3ÜJ <§œZ1½0? YÙL% zV cäÖIb7Ø ‡ û ìa/lÙ ¥ P1: "qáríÍjªÊj0A¯-Íuë" "íàÙ (Œ \t" Á € WìMä) Tjå' y mucho más contenido – Tiny
Sus encabezados de tipo de contenido simplemente se sobrescriben en la última llamada , ¿puedes probar "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", también puedo sugerir agregar un "Content-length" (encabezado con el conteo de bytes del documento) [http://stackoverflow.com/a/ 10630871/61795] usando strlen, puede haber problemas de descarga. – Scuzzy