在我的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();
答案 0 :(得分:5)
默认情况下,PHPExcel缓存公式计算的结果以提高性能,因此第二次调用getCalculatedValue()
时,它将返回缓存的值而不是重新计算。如果您更改了基础数据,则需要在再次调用getCalculatedValue()
之前清除计算缓存,以便检索同一单元格的更新计算值。
PHPExcel_Calculation::getInstance()->clearCalculationCache();
或者,完全禁用计算缓存:
PHPExcel_Calculation::getInstance()->disableCalculationCache();