Pregunta phpexcel para descargar


hola soy nuevo en phpexcel, y me preguntaba si hay alguna forma de enviar el excel que he creado a la descarga de los clientes 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 quiere que acabo de crear.

ahora después de crear la tabla que 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


75
2017-12-19 19:11


origen


Respuestas:


En lugar de guardarlo en un archivo, guárdelo en php://outputDocumentos:

$objWriter->save('php://output');

Esto lo enviará TAL CUAL al navegador.

Quieres agregar algo encabezadosDocumentos primero, como es común con las descargas de archivos, para que el navegador sepa de qué tipo es ese archivo y cómo debe nombrarse (el nombre del archivo):

// We'll be outputting an excel file
header('Content-type: application/vnd.ms-excel');

// It will be called file.xls
header('Content-Disposition: attachment; filename="file.xls"');

// Write file to the browser
$objWriter->save('php://output');

Primero haz los encabezados, luego guarda. Para los encabezados de Excel, vea también la siguiente pregunta: Establecer el tipo de mime para el documento de Excel.


157
2017-12-19 19:15



$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');

21
2017-12-19 19:17



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 ningún otro eco, impresión, resultados.


5
2017-12-19 19:18



PARA USO XLSX

ESTABLECER EN $ 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

ESTABLECER EN $ 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');

5
2017-12-10 15:06



Posiblemente ya hayas resuelto tu problema, de cualquier forma espero que esto te ayude.

todos los archivos descargados comienzan con una línea vacía, en mi caso, donde cuatro están vacíos líneas, y crea un problema. No importa si trabajas con readfile(); o save('php://output');, Esto se puede arreglar con agregar ob_start(); en el comienzo del guion y od_end_clean(); justo antes de la readfile(); o save('php://output');.


4
2017-09-20 18:11



 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');

3
2018-06-18 18:04