3

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

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

/** 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();
4

1 回答 1

5

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

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

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

PHPExcel_Calculation::getInstance()->disableCalculationCache();
于 2013-04-15T09:56:11.077 回答