phpdownloadexportphpexcelexport-to-excel

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


Solution

  • 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.