解决阿里云Linux虚拟主机使用PHPExcel导出xls文件时不弹出下载直接显示的问题
PHPExcel导出文件并弹出下载需要有几个地方注意的,
1、需要清空(擦除)缓冲区并关闭输出缓冲
ob_end_clean();
2、header示例
header("Pragma: public"); header("Expires: 0"); header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); header("Content-Type:application/force-download"); header("Content-Type:application/vnd.ms-execl"); header("Content-Type:application/octet-stream"); header("Content-Type:application/download");; header('Content-Disposition:attachment;filename="data.xls"'); header("Content-Transfer-Encoding:binary");
3、弹出下载框语法示例
$objWriter->save('php://output');
一般来说通过上面3个注意事项就能成功弹出下载框,如果不行,可以尝试更改导出xls格式,如:Excel2007、Excel5,。
最后一个神坑来自阿里云虚拟主机,看如下错误
无论如何操作就是不弹出下载框而是直接在页面上显示,用
$objWriter->save('tt.xls');
能成功导出Excel并打开正常,在代码上摸索了一个小时,来看解决方案,无关代码
登陆阿里云主机管理后台,照上图展示打开一个开关,
以前也用过这种主机但是没有这种问题,汗颜,开启后导出恢复正常,开心的界面出现了