【问题标题】:PHPExcel in CakePHP: error--excel file incompatible or corruptedCakePHP 中的 PHPExcel:错误--excel 文件不兼容或损坏
【发布时间】:2011-02-09 08:15:38
【问题描述】:

我正在使用蛋糕;当我在浏览器中使用函数生成打开 excel 文件时:

我从 Microsoft Excel 收到此错误:

Excel 无法打开 文件“组列表 .xlsx”,因为 文件格式或文件扩展名不是 有效的。确认文件没有 已损坏并且该文件 扩展名匹配的格式 文件。

我尝试从浏览器下载文件名后删除文件名中的空格并再次打开它,它显示与上述相同的错误。有人经历过这个并解决了吗?或任何线索?

由于上述错误,基本上excel文件已打开但为空。我读过一个类似的问题,它说在一个组件文件中删除?> 标记末尾的空格。但是不知道是哪个组件文件..?

附:我正在使用 Microsoft Excel 2010,这可能是原因吗? PHPExcel 目前是否适用于“Microsoft Excel 2010”?

【问题讨论】:

    标签: php cakephp phpexcel


    【解决方案1】:

    PHPExcel Excel2007 Writer 应生成有效的 xlsx 文件,Excel 2007、Excel 2010 和带有兼容包的 Excel 2003 可以读取这些文件。我实际上用 Excel2010 和 Excel2003 进行了大部分测试。

    首先要检查的是通过在文本编辑器中打开文件是否有任何虚假字符被回显到文件中。如果有,那么这些文本可以作为定位问题的指南。特别要注意文件中的第一个字符是空格或换行符。

    xlsx 文件是 xml 文件的压缩集合,因此如果在文本编辑器中没有可见的明显文本字符串(PK 签名旁边),请尝试解压缩它(使用适合您的操作平台的任何解压缩器)。这可能会给出其他有助于诊断问题的错误消息。

    如果您在 Windows 平台上运行,那么 ZipArchive 扩展 (php_zip.dll) 的一些错误版本可能会导致此错误。最新的 SVN 代码允许您使用 PCLZip 作为 ZipArchive 的替代方案。

    如果您仍然遇到问题,请尝试在 PHPExcel 论坛上发布所有详细信息。

    【讨论】:

      【解决方案2】:

      使用适当的标题设置空白布局以创建/下载您的 excel 文件

      这里是 PDF 文件的示例

      <?php 
       header("Content-type: application/pdf"); 
       echo $content_for_layout; 
      ?> 
      

      【讨论】:

        【解决方案3】:

        你试过了吗?

        <?php
        $file="test.xls";
        $test="<table border=1><tr><td>Cell 1</td><td>Cell 2</td></tr></table>";
        header("Content-type: application/vnd.ms-excel");
        header("Content-Disposition: attachment; filename=$file");
        echo $test;
        ?>
        

        谢谢

        【讨论】:

          【解决方案4】:

          我强制我的用户在我的 Controller 中使用以下代码下载 Excel 表格(我使用 PHPExcel 生成关于我的 CakePHP 应用程序的报告):

          header('Content-Type: application/vnd.ms-excel');
          header('Content-Disposition: attachment;filename="'.'myreportname.xls"');
          header('Cache-Control: max-age=0');
          
          $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
          $objWriter->save('php://output');
          
          $this->render(false);
          
          • $objPHPExcel |这是我的工作表,一个 PHPExcel() 对象

          • $this->render(false); |为避免将任何内容输出到客户端浏览器,请确保您没有搞砸 Excel 文件

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-12-04
            • 1970-01-01
            • 2013-12-24
            • 2023-02-22
            • 1970-01-01
            • 1970-01-01
            • 2013-03-11
            相关资源
            最近更新 更多