PHPExcel不评估公式

 小白兔 发布于 2023-02-12 18:08

我正在尝试使用PHPExcel 1.7.9在我的XSLX工作簿中评估以下公式: =IF($H$7=1,$F$13,$H$227*$J$227)

在我必须更新工作簿中的某些单元格然后我使用此行来计算值之前:

$sheet->getCell('L228')->getCalculatedValue();

但是,PHPExcel似乎不会正确更新包含公式的单元格.它会抛出一些通知消息,如下所示但不更新单元格的计算值:

注意:未定义的偏移量:第2852行的D:\ my-path\hkc\Classes\PHPExcel\Calculation.php中的2

没有例外,似乎getCalculatedValue()返回由MS Excel计算的旧缓存值.如下所述,我已经激活了计算引擎的调试日志记录,但它似乎是空的:

PHPExcel_CalcEngine_Logger Object
(
    [_writeDebugLog:PHPExcel_CalcEngine_Logger:private] => 
    [_echoDebugLog:PHPExcel_CalcEngine_Logger:private] => 
    [_debugLog:PHPExcel_CalcEngine_Logger:private] => Array
        (
        )

    [_cellStack:PHPExcel_CalcEngine_Logger:private] => PHPExcel_CalcEngine_CyclicReferenceStack Object
        (
            [_stack:PHPExcel_CalcEngine_CyclicReferenceStack:private] => Array
                (
                )

        )

)

我已经尝试了以下步骤来解决问题:

    停用计算缓存: PHPExcel_Calculation::getInstance()->setCalculationCacheEnabled(FALSE);

    激活计算引擎的调试模式:如何使用PhpExcel处理异常中描述了这一点.特别是http://phpexcel.codeplex.com/discussions/233047
    但是,我不得不稍微修改引用页面的代码 - 也许在PHPExcel 1.7.9中有些变化?
    激活调试:PHPExcel_Calculation::getInstance()->writeDebugLog = true;
    获取调试日志:print_r(PHPExcel_Calculation::getInstance()->getDebugLog());

我不明白为什么引擎的实际日志是空的?引擎在写出任何条目之前是否停止工作或者我的调试配置有问题?

但是,我试图用Java和Apache POI评估相同的公式 - 它有效!不幸的是我要将PHP用于当前项目.

请帮我!也许有人知道公式评估有什么问题,或者至少可以给我一些提示如何正确激活调试?

谢谢!

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有