创建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');
使用任何类型的浏览器的输出不是获取Excel 2007文件,而是类似于:
07:31:12创建新的PHPExcel对象07:31:12设置属性07:31:12添加一些数据07:31:12重命名表07:31:12写入Excel2007格式PKæ;È< - ![[Content_Types] .xml“MNÃ0...÷= ...å-Jܲ@%í,*Q``IcÕ± - {úw{&I E j7±”û½og÷œ%“NKë”ü‰Ï|£by by‰] * y“Hª† F |||||||||||||||
我试过各种浏览器,但我得到了相同的结果。另一方面,如果我使用下面这些行保存文件,它可以正常工作:
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('/usr/local/myWorkbooks/workbook1.xlsx');
知道为什么它不能通过我的浏览器工作?在此先感谢您的帮助
如果您将输出流式传输到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://输出....我很惊讶你也没有得到“已经发送的标题”错误同样
在保存之前,您必须使用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;