我使用PHPExcel库构建了一个Excel文档。我的文档打开,在Numbers(mac)和Office 2007(windows)中看起来都很好。我将文件保存为.xlsx文件。
当我打开文件时,虽然显示正确,但却会出现以下错误/警告。
在Numbers中,它会发出警告“表格上的密码保护不受支持且已被删除”
在Office 2007中,它提供了错误“ Excel在'filename.xlsx'中找到了不可读的内容。。是否要恢复此工作簿的内容?如果您信任此工作簿的来源,请单击是。“当我点击是,一切都显示正常,并显示”删除记录:从/sl/worksheets/sheet1.xml部分合并单元格“。
应该注意的是,我没有在我的文件中添加任何密码。我也只有一本工作簿。任何人都知道如何摆脱这些或可能导致它们的原因?
答案 0 :(得分:7)
我遇到了同样的问题,我只是简单地提出了一个
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();
答案 1 :(得分:1)
我在使用CakePHP构建带有mergecells的电子表格时碰到了类似的东西。它适用于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编写器可以正常使用上面的最后一个示例。希望这有助于某人。