使用PHPExcel强制下载excel文件

时间:2014-01-06 16:40:15

标签: php http http-headers phpexcel

我正在使用以下标头输出通过PHPExcel生成的Excel工作表:

// Redirect output to a client’s web browser (Excel2007)
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="01simple.xlsx"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output'); 

而是将乱码文本发送到浏览器:

PK������&DG�D�X��������[Content_Types].xml��MN�0���"�%nY ��vAa  �(0����ؖg�w{&i�@�nbE�{��y��d۸l
    m�����X�(���)���F��;@1_�����c)j�x/%��E��y�

任何人都可以帮我使用正确的标题来强制下载excel文件吗?非常感谢。

修改1:

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="01simple.xlsx"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output'); 

仍然无法正常工作

3 个答案:

答案 0 :(得分:7)

错误的内容类型和文件类型无济于事:

application/vnd.ms-excel适用于使用.xls Writer

创建的Excel5个文件

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet用于使用.xlsx Writer

创建的Excel2007个文件

但是如果你在浏览器中看到gibberish(实际上是xlsx文件本身),那么你可能会回复或打印其他东西给浏览器,即使它是在发送这些标题之前,只有像空格,制表符或换行符这样的空白字符

答案 1 :(得分:5)

清理输出

1
1
1
2
2
3
3
3
3

答案 2 :(得分:0)

这个问题偷走了我的一生!像这样杀了:

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