解决阿里云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,。

最后一个神坑来自阿里云虚拟主机,看如下错误

1.jpg

无论如何操作就是不弹出下载框而是直接在页面上显示,用

$objWriter->save('tt.xls');

能成功导出Excel并打开正常,在代码上摸索了一个小时,来看解决方案,无关代码

open.jpg

登陆阿里云主机管理后台,照上图展示打开一个开关,

以前也用过这种主机但是没有这种问题,汗颜,开启后导出恢复正常,开心的界面出现了

000.jpg