我不断发现这个错误"公式中的循环参考"。
当我尝试下载我的Excel文件时。
现在,当我删除' ='来自我的档案中的公式
$this->exportObj->setActiveSheetIndex(0)
->setCellValue(strtoupper($this->abc[$currentColumn]).$currentLine, (str_replace("=", "", $column)) );
我可以下载文件,但当然,formala不会工作..
这是我的excel文件: http://www.2shared.com/document/SPtnvq6e/excel.html
我的配方有什么问题? 我无法看到任何我做错的事情......
答案 0 :(得分: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;
答案 1 :(得分:0)
对我来说,这是在我指定向后的列范围时发生的。因此,一旦我将它从低到高排序,它就会给出E11:E10而不是E10:E11,该错误消失了。我正在使用= SUM()函数,我想phpExcel和excel无法向后处理它……