创建PHPExcel程序后,最后一步是保存工作表,为此,我想应用这些规则以便在Excel 2007中生成文件:
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="workbook1.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
使用任何类型的浏览器的ouptut都不是获取Excel2007文件,而是:
07:31:12创建新的PHPExcel对象07:31:12设置属性07:31:12 添加一些数据07:31:12重命名表07:31:12写入Excel2007格式 PKæ; e控制 - ![[Content_Types] .xml“MNÃ0...÷= ...å-Jܲ@%í,*Q`ìIcÕ± - {úw{& I E J7±“û½oüg÷œ%” NKE”ü‰Ï|£由‰] * y“的Hª†F|Üp4SùØH¤ß¸Aªμ\ I“OAA†ŸŽXñJD£-dÄÙHì .....
我试过各种浏览器,但得到了相同的结果。另一方面,如果我使用下面这些行保存文件,它可以正常工作:
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('/usr/local/myWorkbooks/workbook1.xlsx');
知道为什么它无法通过我的浏览器工作?在此先感谢您的帮助
答案 0 :(得分:0)
如果您将输出流式传输到php:// output,则不得回显该输出流的任何其他内容。 你清楚地回应了这些界限:
07:31:12 Create new PHPExcel object
07:31:12 Set properties
07:31:12 Add some data
07:31:12 Rename sheet
07:31:12 Write to Excel2007 format
在Excel文件本身之前输出
删除那些回声线
这是标准的PHP行为,这个问题在过去已经被回答了数千次:回到php://输出....我很惊讶你也没有得到“标题已经发送“错误
答案 1 :(得分:0)
在保存之前,您必须清理输出缓冲区并使用ob_end_clean()
关闭缓冲。改为这样做:
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="workbook1.xlsx"');
header('Cache-Control: max-age=0');
ob_end_clean();
$objWriter->save('php://output');
exit;