PHPExcel生成的excel文件不工作。(文件格式或扩展名无效)

PHPExcel生成的excel文件不工作。(文件格式或扩展名无效),php,export,phpexcel,Php,Export,Phpexcel,PHPExcel生成的excel文件不工作。(文件格式或扩展名无效) PHPExcel的示例代码在我的本地PC上成功地执行,文件被下载到本地并在Excel 2007中成功打开。 但是在我的服务器上使用相同的代码会给excel提供一个无效的文件,当我打开并修复该文件时,它会成功打开 我不想使用“打开并修复”选项,只想使用“打开”选项 找不到问题吗?请帮忙 $objPHPExcel->setActiveSheetIndex(0); //for XLSX header('Content-Typ

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;

编写Excel文件不仅仅是为任意文件提供xlsx或xls扩展名的问题

您可以编写一个BIFF5或BIFF8 xls文件(所有版本的Excel post 95都会读取此文件),也可以使用Excel 2003和Excel 2007(以及Excel 2010)打开Excel 2003 XML格式

有关excel 2007的更多详细信息和示例,请参阅该页


如果我能为您提供更多帮助,请告诉我。

在文本编辑器中打开文件,检查是否有任何虚假字符被回音到文件中。如果有的话,你可能会知道他们被介绍到哪里。空格或换行显然是罪魁祸首

另外,请确保任何文件中的
标记前没有空格或换行符

xlsx
格式实际上是
xml
文件的压缩集合,因此如果在文本编辑器中没有明显的文本字符串(PK签名旁边),请尝试解压缩它。这可能会为这个问题提供其他线索


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

您发布的文件在PHPExcel输出之前有一个空格字符。。。检查您的脚本以查看此文件可能发送到的位置php://output 流动检查您的初始
是否为
应用程序/vnd.ms excel

而不是

应用程序/vnd.openxmlformats of icedocument.spreadsheetml.sheet

XLS示例:

$objPHPExcel = new PHPExcel();

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="item_list.xlsx"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
$objPHPExcel = new PHPExcel();

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="item_list.xlsx"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
XLSX示例:

$objPHPExcel = new PHPExcel();

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="item_list.xlsx"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
$objPHPExcel = new PHPExcel();

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="item_list.xlsx"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');

添加一行
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;

我遇到了同样的问题,发现有一个新行字符,它来自所需数据的开头,并导致了这个错误。后来我发现我有一个php文件,上面有结束标记

"?>" 
通常建议避免使用关闭php标记,因为它们也会进入输出缓冲区。使用ob_end_clean()也是一个不错的选择


可以找到更多详细信息

我解决了我的问题,我使用命令安装了zip

sudo apt get安装php7.0-zip 然后重新启动服务器 sudo服务apache2重启 它对我有用
我在不知道xlsx文件的确切内容的情况下使用了

,很难确定MS Excel抱怨的几百万种可能性中的哪一种。。。您正在使用哪些其他功能(如自动过滤器、图表等)?什么版本的MS Excel?如果您将文件写入服务器的磁盘而不是通过浏览器保存,您是否仍然存在相同的问题?如果您使用Excel5 Writer并另存为.xls文件,它还会抱怨吗?你能将该文件的副本上传到PHPExcel网站进行调查吗?@Mark Baker:不,在服务器上,该文件是正确生成的,当我下载它时,它在excel中成功打开,没有任何问题。这几乎肯定意味着你的脚本正在将某些内容回传到服务器中php://output 流动无论是前导或尾随空格或空行,还是
?>
之间的间隙,先生,我正在重新检查它,我正在将excel文件上载到PHPExcel网站,请检查。那会很有帮助的。只有两列两行,我已经删除了所有空格。我已经发布了我的excel文件,请查看,我仍然无法解决问题:(使用文本文件编辑器打开的想法对我帮助很大。我在损坏的excel文件的开头找到了额外的选项卡。我可以删除尽可能多的空白,但仍然不起作用,在输出之前找不到单个空格,所以我找到了ob_end_clean()在stackoverflow上的一篇文章中,使用了它,它起了作用。
ob\u end\u clean()
总是会有一个解决办法……在某个地方,会有一个空格或BOM标题或一些输出文本导致这个问题……正确的解决办法总是识别该输出并消除它。我也有同样的问题,用ob\u end\u clean()解决了;READ@sqlchild格式为application/vnd.ms-excelgreat。对我也有用。