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


PHPExcel Warning/Error when opening document

我使用PHPExcel库构建了一个Excel文档。我的文档在Numbers (mac)和Office 2007 (windows)中都能打开,看起来很好。我将文件保存为。xlsx文件。

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

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

在Office 2007中,它给出错误"Excel在'filename.xlsx'中发现不可读的内容"。您要恢复此工作簿的内容吗?如果您信任此工作簿的来源,请单击"是"。"当我点击是,一切显示良好,它说"删除记录:合并单元格从/sl/工作表/sheet1.xml部分"。

应该指出的是,我没有添加任何密码到我的文件。我也只有一本练习册。有谁知道我怎么才能摆脱这些或者是什么引起的吗?

我也遇到过同样的问题,我只是简单地把

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();

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

构建2007电子表格
$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编写器在上面的最后一个示例中工作得很好。