1

这些是我得到的例外:

我收到以下异常:

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

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

使用 getOldCalculatedValue() 第一次获得正确的值我使用它(我不知道如何)

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

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

致命错误:未捕获的异常 'Exception' 带有消息 '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,图表,2)

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

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

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

4

1 回答 1

0

循环公式类似于(例如)单元格 A1 包含公式 =B1+1 而单元格 B1 包含 =A1+1,即。执行公式会导致一连串的计算循环回自身

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

PHPExcel 支持这两种行为:默认是生成错误消息,就像 Excel 一样。但是,如果将计算引擎的 $cyclicFormulaCount 属性设置为大于 0 的值,它将模拟 Excel 可以表现出的第二种行为。在最简单的级别

PHPExcel_Calculation::getInstance()->cyclicFormulaCount = 1

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

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

于 2012-05-13T17:03:24.950 回答