PHPExcel 不会重新计算

标签 php phpexcel

<分区>

在我的 excel 文件中,我有 B1=IF(A1>0,"Greater than Zero",IF(A1<0,"Less than Zero","Equal Zero")) . 我试图检索 B1信息来自getCalculatedValue更改 A1 后值(value)。

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

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

最佳答案

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

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

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

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

关于PHPExcel 不会重新计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16009822/

相关文章:

php - 在 Laravel 5 的自定义错误页面上从中止输出错误消息

javascript - 显示一条消息直到 php 脚本完成

php - 在另一个 DAO 中使用一个 DAO——好的还是坏的做法?

PHPExcel:如何检查 XLS 文件是否有效?

mysql - phpexcel - 如何从数组中循环获取结果集中的所有值

php - Codeigniter session 终止

PHPExcel在列和单元格中打印

php - MySQL PHP 未将大数据导出到 Excel

PHPEXCEL 获取在 excel 文件中可见的格式化日期

php - Htaccess http 到 https 与 php 异常