PHPExcel - 公式中的错误循环引用

Dan*_*vah 2 php phpexcel

我一直在回答这个错误"公式中的循环引用".

当我尝试下载我的Excel文件时.

现在当我从我的文件中删除公式中的'='时

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

我可以下载文件,但当然formala将无法正常工作..

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

我的配方有什么问题?我什么都看不到我做错了..

Mar*_*ker 8

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

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

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

PHPExcel_Calculation::getInstance()->cyclicFormulaCount = 1;
Run Code Online (Sandbox Code Playgroud)

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

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

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

$objWriter->setPreCalculateFormulas(FALSE);
Run Code Online (Sandbox Code Playgroud)

编辑

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

而不是

PHPExcel_Calculation::getInstance()->cyclicFormulaCount = 1;
Run Code Online (Sandbox Code Playgroud)

你会用的

PHPExcel_Calculation::getInstance($objPHPExcel)->cyclicFormulaCount = 1;
Run Code Online (Sandbox Code Playgroud)