PHPExcel不会重新计算

时间:2013-04-15 07:28:29

标签: php phpexcel

在我的Excel文件中,我有B1=IF(A1>0,"Greater than Zero",IF(A1<0,"Less than Zero","Equal Zero"))。 我在更改B1值后,尝试通过getCalculatedValue检索A1个信息。

我多次这样做,但两个回声都回归“小于零” 我不明白为什么第二个回声不会返回“Equal Zero?”

/** Change A1 Value **/
$objPHPExcel->getActiveSheet()->setCellValue('A1','=-1');

/** Calculate and State B1 Value **/
echo $objPHPExcel->getActiveSheet()->getCell('B1')->getCalculatedValue();

/** Change A1 Value AGAIN **/
$objPHPExcel->getActiveSheet()->setCellValue('A1','=0');

/** Calculate and State B1 Value **/
echo $objPHPExcel->getActiveSheet()->getCell('B1')->getCalculatedValue();

1 个答案:

答案 0 :(得分:5)

默认情况下,PHPExcel缓存公式计算的结果以提高性能,因此第二次调用getCalculatedValue()时,它将返回缓存的值而不是重新计算。如果您更改了基础数据,则需要在再次调用getCalculatedValue()之前清除计算缓存,以便检索同一单元格的更新计算值。

PHPExcel_Calculation::getInstance()->clearCalculationCache();

或者,完全禁用计算缓存:

PHPExcel_Calculation::getInstance()->disableCalculationCache();