phpexcel to download

你好,我是phpexcel的新手,我想知道是否有某种方法可以将我创建的Excel发送到客户端下载,而无需将其保存在我的服务器上或在下载后立即将其删除

我正在尝试在页面上创建一个“导出按钮”,该按钮将为用户提供一个“弹出窗口”,其中包含他想要的我刚刚创建的excel。

现在在我创建表后,我做:

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

但这会将其保存到我的服务器

谢谢


答案 1

与其将其保存到文件,不如将其保存到 php://output文档

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

这将按原样将其发送到浏览器。

您想先添加一些标题文档,就像在文件下载中很常见一样,这样浏览器就会知道该文件的类型以及它应该如何命名(文件名):

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

首先执行标头,然后保存。对于 Excel 标头,请参阅以下问题:为 Excel 文档设置 mime 类型


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

推荐