【问题标题】:PHPExcel save error - Cell coordinate string can not be a range of cellsPHPExcel保存错误 - 单元格坐标字符串不能是单元格范围
【发布时间】:2017-12-06 18:22:19
【问题描述】:

我目前正在尝试保存一个用 PHPExcel 加载的 excel 文件。模板文件具有多个引用公式中其他工作表的工作表。模板正在从我的本地 Apache 服务器加载。加载文件后,我尝试保存它并抛出异常“单元格坐标字符串不能是单元格范围”。使用 HTML 编写器,它可以完美显示。

这是我的代码:

require_once "assets/vendors/PHPExcel/PHPExcel.php";
require_once 'assets/vendors/PHPExcel/PHPExcel/IOFactory.php';
$tmpfname = 'template_files/templateFile.xlsx';

$objReader = PHPExcel_IOFactory::createReaderForFile($tmpfname);
$objPHPExcel = $objReader->load($tmpfname);

try {
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    header('Content-Disposition: attachment;filename="myfile.xlsx"');
    header('Cache-Control: max-age=0');
    $objWriter->save('php://output');  

} catch (Exception $e) {
        echo 'Caught exception: ',  $e->getMessage(), "\n";
}

我希望我的模板表可以像往常一样在 PHPExcel 中下载,但无法解决这个问题。有没有其他人遇到过类似的事情?

下载的文档是完全空白的,除了打印的异常“捕获异常:单元格坐标字符串不能是单元格范围”。

【问题讨论】:

    标签: php phpexcel


    【解决方案1】:

    对于将来遇到此异常的任何人:

    从您的文档中删除格式并尝试使用 PHPExcel 保存它。 我不确定确切的来源,但删除后我用谷歌表格复制了格式,作者导出得很好。

    【讨论】:

    • 我在 PhpSpreadsheet 中遇到了类似的问题。我所做的是读取 Xlsx 文件,然后立即保存而不做任何更改。这剥离了导致问题的元素(复选框、下拉菜单)。您的里程可能会有所不同,但它帮助我重新开始工作。
    【解决方案2】:

    PHP 输出中有什么内容?

    您在某处有错误数据。在三种情况下会抛出此异常:

    1. 尝试查找 absoluteCoordinate 时会传递一个包含“:”或“,”的字符串

    1. 尝试查找 absoluteReference 时会传递一个包含“:”或“,”的字符串

    1. coordinateFromString 在字符串变量中使用“:”或“,”调用。

    我会寻找一个不应该出现在 PHP 输出或模板文件中的单元格中的杂散逗号或全冒号...

    【讨论】:

    • 感谢您抽出宝贵时间回答。目前唯一的输出是异常。我仔细检查了错误数据,甚至删除了所有单元格条目,但除非我从所有工作表中删除单元格格式,否则我会收到相同的异常。
    • 特别感兴趣的是“php://output”中包含的内容。如果这没有被解析,例如 ... ;-) (记住单引号在 PHP 中的含义...)
    猜你喜欢
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多