强制保存和下载PHPExcel文件

时间:2012-12-06 21:59:56

标签: download export phpexcel

使用我的一个项目,我可以使用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)

的用户,此问题往往最为明显

感谢您的投入。

1 个答案:

答案 0 :(得分:0)

马克的提示是正确的。对于可能遇到这种情况的任何其他人来说,这就是正在发生的事情。

PHPExcel,出于某种原因,需要'Creator'和'Last Modified By'字段,我没有使用它们。我只是在PHPExcel代码中注释掉了两行代码,这些代码引用了这两个项目。

它仍然没有解释为什么它影响了强制文件而不是保存的文件,但我运行的理论是这个。

  1. 保存的文件由所有标题信息集创建并保存。
  2. 强制文件以某种方式包含了文件头部的打印错误。