PHPExcel生成的excel文件无法正常工作.(文件格式或扩展名无效)

sql*_*ild 7 php export phpexcel

PHPExcel生成的excel文件无法正常工作.(文件格式或扩展名无效)

PHPExcel的示例代码在我的本地PC上成功完成,该文件被下载到本地并在Excel 2007中成功打开.但是在我的服务器上使用相同的代码会将无效文件提供给excel,当我打开并修复时,它会成功打开.

我不想使用"打开并修复"选项,只能使用"打开"选项.

找不到问题?请帮忙.

$objPHPExcel->setActiveSheetIndex(0);

//for XLSX
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="item_list.xlsx"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');

exit;
Run Code Online (Sandbox Code Playgroud)

Gov*_*ind 27

在行ob_end_clean();前的程序末尾添加一行$objWriter->save('php://output');

代码如下所示://用于XLSX

$objPHPExcel->setActiveSheetIndex(0);

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');


header('Content-Disposition: attachment;filename="item_list.xlsx"');

header('Cache-Control: max-age=0');


$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

ob_end_clean();
$objWriter->save('php://output');


exit;
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用,谢谢你的提示! (2认同)
  • 伟大的。也为我工作过。 (2认同)

Mar*_*ker 18

您发布的文件在PHPExcel输出之前有一个空格字符...检查您的脚本以查看它可能发送到php://输出流的位置.检查初始<?php开始标记之前是否没有空格; 特别注意?> <?php或关闭/打开标签.并检查included脚本可能包含的任何文件

  • `ob_end_clean()`是___always___将成为一个workround ....在某个地方,会有一个空格或BOM头或一些输出文本导致这个问题....正确的解决方案始终是识别输出并消除它 (6认同)
  • 我可以删除尽可能多的空格,但它仍然没有用,我在输出之前找不到单个空格,所以我在stackoverflow上的帖子上找到ob_end_clean()并使用它并且它有效. (5认同)

Gor*_*man 5

通过在文本编辑器中打开任何虚假字符来检查它是否被回显到文件中.如果有,你可以找出他们被介绍的地方.空格或换行是明显的罪魁祸首.

此外,请确保<?php标记之前或?>任何文件中的标记后面没有空格或换行符.

xlsx格式实际上是一个压缩收集xml文件,所以如果有在文本编辑器都没有明显的文本字符串(PK的签名旁)可见,然后尝试解压它.这可能会为这个问题提供其他线索.

如果您在Windows平台上运行,那么ZipArchive php_zip.dll链接库的一些错误版本可能会导致此错误.您可以使用PCLZip替代ZipArchive.