打开文档时出现PHPExcel警告/错误

打开文档时出现PHPExcel警告/错误,php,phpexcel,Php,Phpexcel,我已经使用PHPExcel库构建了一个Excel文档。我的文档打开后,在数字(mac)和Office 2007(windows)中都显示良好。我正在将文件保存为.xlsx文件 当我打开文件时,虽然它显示正确,但它会给出以下错误/警告 在数字中,它给出警告“不支持工作表上的密码保护,已被删除” 在Office 2007中,出现错误“Excel在“filename.xlsx”中发现不可读的内容。是否要恢复此工作簿的内容?如果您信任此工作簿的来源,请单击“是”。”当我单击“是”时,所有内容都显示良好,

我已经使用PHPExcel库构建了一个Excel文档。我的文档打开后,在数字(mac)和Office 2007(windows)中都显示良好。我正在将文件保存为.xlsx文件

当我打开文件时,虽然它显示正确,但它会给出以下错误/警告

在数字中,它给出警告“不支持工作表上的密码保护,已被删除”

在Office 2007中,出现错误“Excel在“filename.xlsx”中发现不可读的内容。是否要恢复此工作簿的内容?如果您信任此工作簿的来源,请单击“是”。”当我单击“是”时,所有内容都显示良好,并显示“删除的记录:合并/sl/worksheets/sheet1.xml部分的单元格。”


需要注意的是,我没有向我的文件添加任何密码。我也只有一个工作簿。有人知道我如何摆脱这些或是什么原因导致它们吗?

我在使用CakePHP使用mergecells构建电子表格时遇到了类似的情况。它适用于Excel 2003,但不适用于Excel 2007格式。如果我构建2007 spreadsheet使用:

$objPHPExcel->getActiveSheet()->mergeCells('C30:E30');
电子表格加载良好。但是,以任何方式使用变量,如以下变量:

$mergestr = '\'C'.(30+$i).':E'.(30+$i).'\'';
$objPHPExcel->getActiveSheet()->mergeCells($mergestr);
$objPHPExcel->getActiveSheet()->mergeCells(eval("return \$$mergestr;"));
$objPHPExcel->getActiveSheet()->mergeCells('\'C'.(30+$i).':E'.(30+$i).'\'');
$objPHPExcel->getActiveSheet()->mergeCells('C'.(30+$i).':E'.(30+$i));

我收到与您相同的错误。我不确定是否有办法以PHPExcel对Excel2007编写器的方式对变量进行转义。Excel5编写器在上面的最后一个示例中运行良好。希望这对其他人有所帮助。

我也遇到了同样的问题,我解决了这个问题,只需将

exit();
就在
$objWriter->save('php://output);
命令

例如

// Redirect output to a client’s web browser (Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="industrializzazione_RTW_'.$rows[0]['stagione'].'.xlsx"');
header('Cache-Control: max-age=0');

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