2

我不断收到此错误“公式中的循环引用”。

当我尝试下载我的 excel 文件时。

现在,当我从我的文件中删除公式中的“=”时

$this->exportObj->setActiveSheetIndex(0)
                                ->setCellValue(strtoupper($this->abc[$currentColumn]).$currentLine, (str_replace("=", "", $column)) );

我可以下载文件,但formala当然不起作用..

这是我的 excel 文件: http ://www.2shared.com/document/SPtnvq6e/excel.html

我的公式有什么问题?我看不到我做错了什么..

4

2 回答 2

8

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

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

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

PHPExcel_Calculation::getInstance()->cyclicFormulaCount = 1;

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

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

或者,您可以在保存文件之前阻止 PHPExcel 计算公式:

$objWriter->setPreCalculateFormulas(FALSE);

编辑

从 1.7.9 版本开始,计算引擎已被修改,每个工作簿文件都有一个计算引擎实例,因此有必要指明需要为哪个实例设置 cyclicFormulaCount。

而不是

PHPExcel_Calculation::getInstance()->cyclicFormulaCount = 1;

你会用

PHPExcel_Calculation::getInstance($objPHPExcel)->cyclicFormulaCount = 1;
于 2012-12-09T11:44:38.593 回答
0

对我来说,这发生在我指定一个向后的列范围时。所以不是 E10:E11 它是给 E11:E10 一旦我把它从低到高的顺序错误就消失了。我正在使用 =SUM() 函数,我猜 phpExcel 和 excel 无法向后处理它......

于 2020-07-01T02:55:38.717 回答