在phpExcel中使用getCalculatedValue()的异常

时间:2012-05-12 09:08:44

标签: phpexcel

这些是我得到的例外:

我收到以下异常:

带有“公式中的循环引用”消息的未捕获异常“异常”

我正在处理包含非常复杂计算的Excel工作表。我不能在这里写出来。我正在使用一个接口将值发送到该excel表的特定单元格。然后从输出单元格中取回计算出的值。

使用getOldCalculatedValue()首先获取正确的值我使用它时(我不知道如何)

getOldCalculatedValue()的问题在于这不是解决方案。当我更新输入值时,输出值也不会改变。

现在我深入检查..这些是产生异常的公式:

致命错误:未捕获的异常'异常',消息'STEAM!B30 - > STEAM!E57 - > STEAM!B56 - > STEAM!B38 - > STEAM!B89 - >内部错误'

B30:= IF(G32 = 1,IF(E570,D55<&0),IF(G32 = 1,IF(E57

E57:== IF(B44

B56:B38 = SQRT *(IF(E44 = 1,B52,1 ^(3/4)* B53 ^(1/4)* B52 / E43 ^(3/4)/ E44 ^(1/4 ))/ E43)

B38:= VLOOKUP(B70,CHART,2)

B89:== HLOOKUP($ E $ 4,WLC2CV,VLOOKUP($ B $ 4,WLC2CV,15))

当我通过分配旧的计算值来处理异常时,会产生警告。

警告(2):sqrt()期望参数1为double,给定字符串[APP \ vendors \ Classes \ PHPExcel \ Calculation.php,第3324行]

1 个答案:

答案 0 :(得分:0)

循环公式是(例如)单元格A1包含公式= B1 + 1而单元格B1包含= A1 + 1,即。执行公式导致一系列计算循环回自身

这在Excel中有效,但默认行为是在遇到错误消息时生成错误消息。但是,您可以更改此行为,以便Excel将通过指定的循环次数或迭代次数处理公式。

PHPExcel支持这两种行为:默认情况下是生成错误消息,就像Excel那样。但是,如果将计算引擎的$ cyclicFormulaCount属性设置为大于0的值,它将模拟Excel可以展示的第二个行为。 在它最简单的水平

PHPExcel_Calculation::getInstance()->cyclicFormulaCount = 1

将抑制循环错误并允许执行基本循环计算,将$ cyclicFormulaCount设置为更高的值将允许通过几个循环或迭代(到您指定的值)计算公式。

getOldCalculatedValue()方法检索MS Excel本身最后执行的计算结果。这可能是正确的,但不能保证(例如,如果在excel本身中已经抑制了公式计算)。

相关问题