hola, soy nuevo en phpexcel, y me preguntaba si hay alguna forma de enviar el Excel que he creado a los clientes para descargarlo sin guardarlo en mi servidor o eliminarlo justo después de que lo descargue
Estoy tratando de crear un "botón de exportación" en una página que le dará al usuario una "ventana emergente" con el Excel que él quiere que acabo de crear.
ahora, después de crear la tabla, hago:
$objXLS->getActiveSheet()->getColumnDimension("A")->setAutoSize(true);
$objXLS->getActiveSheet()->getColumnDimension("B")->setAutoSize(true);
$objXLS->getActiveSheet()->setTitle('Test Stats');
$objXLS->setActiveSheetIndex(0);
$objWriter = PHPExcel_IOFactory::createWriter($objXLS, 'Excel5');
$objWriter->save(__DIR__."/test1.xls");
pero eso lo guarda en mi servidor
gracias
header
líneas y la->save()
acción. Es necesario decidir entre: a) mostrar una página o b) ofrecen una descarga. Ambos no funcionan fácilmente con un solo script. Sin embargo, puede crear una secuencia de comandos para la descarga y otra para la página, y cuando la secuencia de comandos de la página se haya ejecutado, redirigir a la secuencia de comandos de descarga que hará que el navegador ofrezca el cuadro de diálogo Guardar como.Content-Length
encabezado cuando se usaphp://output
?$excel = new PHPExcel(); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="your_name.xls"'); header('Cache-Control: max-age=0'); // Do your stuff here $writer = PHPExcel_IOFactory::createWriter($excel, 'Excel5'); // This line will force the file to download $writer->save('php://output');
fuente
MIME
Tipo aapplication/vnd.openxmlformats-officedocument.presentationml.presentation
, está descargando el archivo en mi sistema pero diciendo esoFile can't be opened
. El archivo estaba funcionando cuando el código lo estaba escribiendo en el servidor.PARA USO XLSX
SET IN $ xlsName nombre de XLSX con extensión. Ejemplo: $ xlsName = 'teste.xlsx';
$objPHPExcel = new PHPExcel(); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="'.$xlsName.'"'); header('Cache-Control: max-age=0'); $objWriter->save('php://output');
PARA USO XLS
SET IN $ xlsName nombre de XLS con extensión. Ejemplo: $ xlsName = 'teste.xls';
$objPHPExcel = new PHPExcel(); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="'.$xlsName.'"'); header('Cache-Control: max-age=0'); $objWriter->save('php://output');
fuente
MIME
Tipo aapplication/vnd.openxmlformats-officedocument.presentationml.presentation
, está descargando el archivo en mi sistema pero diciendo esoFile can't be opened
. El archivo estaba funcionando cuando el código lo estaba escribiendo en el servidor.Usa esta llamada
$objWriter->save('php://output');
Para enviar la hoja XLS a la página en la que se encuentra, solo asegúrese de que la página en la que se encuentra no tenga otras salidas de eco, impresión.
fuente
MIME
Tipo aapplication/vnd.openxmlformats-officedocument.presentationml.presentation
, está descargando el archivo en mi sistema pero diciendo esoFile can't be opened
. El archivo estaba funcionando cuando el código lo estaba escribiendo en el servidor.header('Content-type: application/vnd.ms-excel'); header('Content-Disposition: attachment; filename="file.xlsx"'); header('Cache-Control: max-age=0'); header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); header ('Cache-Control: cache, must-revalidate'); header ('Pragma: public'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output');
fuente
MIME
Tipo aapplication/vnd.openxmlformats-officedocument.presentationml.presentation
, está descargando el archivo en mi sistema pero diciendo esoFile can't be opened
. El archivo estaba funcionando cuando el código lo estaba escribiendo en el servidor.Es posible que ya hayas resuelto tu problema, de todos modos espero que esto te ayude.
todos los archivos descargados comienzan con una línea vacía, en mi caso con cuatro líneas vacías, y eso crea un problema. No importa si trabaja con
readfile();
osave('php://output');
, esto se puede solucionar agregandoob_start();
al principio del script yob_end_clean();
justo antes dereadfile()
; osave('php://output');
.fuente
ob_end_clean()
nood_end_clean()