1

在我的一个项目中,我让用户使用 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)的用户来说,这个问题往往最为突出

感谢您的输入。

4

1 回答 1

0

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

由于某种原因,PHPExcel 需要“创建者”和“上次修改者”字段,而我没有使用它们。我只是注释掉了引用这两项的 PHPExcel 代码中的两行代码。

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

  1. 保存的文件由所有的头信息集创建并保存。
  2. 强制文件以某种方式包含文件头部的打印错误。
于 2012-12-08T07:17:37.020 回答