【问题标题】:PHPExcel Warning/Error when opening document打开文档时PHPExcel警告/错误
【发布时间】:2011-07-30 01:21:15
【问题描述】:

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

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

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

在 Office 2007 中,它给出错误“Excel 在 'filename.xlsx' 中发现不可读的内容。是否要恢复此工作簿的内容?如果您信任此工作簿的来源,请单击“是”。”当我单击“是”时,一切正常,并显示“Removed Records: Merge cells from /sl/worksheets/sheet1.xml part”。

需要注意的是,我没有在我的文件中添加任何密码。我也只有一本工作簿。任何人都知道我可以如何摆脱这些或可能导致它们的原因?

【问题讨论】:

    标签: php phpexcel


    【解决方案1】:

    我遇到了同样的问题,我只是简单地解决了一个

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

    【讨论】:

      【解决方案2】:

      我在使用 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 编写器适用于上面的最后一个示例。希望这对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-19
        • 2012-12-02
        • 1970-01-01
        • 2019-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-18
        相关资源
        最近更新 更多