使用我的一个项目,我可以使用PHPExcel将用户“导出”信息导入Excel文件。当它工作时,它完美地工作。其他时候,只有一些人可以实际打开文件。
由于我需要存储创建的导出,因此将它们保存在服务器上,然后使用readfile()下载创建的文件。当它不起作用时(现在大部分时间都是这样),人们会收到“错误的文件格式”错误。真正奇怪的是,由于文件已保存,他们可以尝试再次下载相同的文件。然后就行了。
这是我的最终保存和下载代码:
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'.$Temp_Export_File_Name.'"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
//$objWriter->save('php://output');
$objWriter->save('../project_files_images/created_exports/'.$Temp_Export_File_Name);
readfile('../project_files_images/created_exports/'.$Temp_Export_File_Name);
exit;
我错过了这段代码有什么问题吗?对于最新版本的Office(Mac或Windows)
的用户,此问题往往最为明显感谢您的投入。
答案 0 :(得分:0)
马克的提示是正确的。对于可能遇到这种情况的任何其他人来说,这就是正在发生的事情。
PHPExcel,出于某种原因,需要'Creator'和'Last Modified By'字段,我没有使用它们。我只是在PHPExcel代码中注释掉了两行代码,这些代码引用了这两个项目。
它仍然没有解释为什么它影响了强制文件而不是保存的文件,但我运行的理论是这个。