Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

phpexcel to download

hello i am new to phpexcel, and i was wondering if there is some way send the excel i have created to the clients download without saving it on my server or to delete it right after he downloads it

i am trying to create an "export button" on a page that will give the user a "pop-up" with the excel that he wants that i have just created.

now after i create the table i do :

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

but that saves it to my server

thank you

like image 483
Dvir Levy Avatar asked Dec 19 '11 19:12

Dvir Levy


People also ask

What is PHPExcel library?

PHPExcel. PHPExcel is a library written in pure PHP and providing a set of classes that allow you to write to and read from different spreadsheet file formats, like Excel (BIFF) . xls, Excel 2007 (OfficeOpenXML) . xlsx, CSV, Libre/OpenOffice Calc .


2 Answers

Instead of saving it to a file, save it to php://output­Docs:

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

This will send it AS-IS to the browser.

You want to add some headers­Docs first, like it's common with file downloads, so the browser knows which type that file is and how it should be named (the filename):

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

First do the headers, then the save. For the excel headers see as well the following question: Setting mime type for excel document.

like image 183
hakre Avatar answered Sep 21 '22 00:09

hakre


$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'); 
like image 20
matino Avatar answered Sep 24 '22 00:09

matino