我的PHPExcel问题如下所示
function Test($a, $b) {
// Create a new PHPExcel object with a single sheet
$objPHPExcel = new PHPExcel();
$activeSheet = $objPHPExcel->getActiveSheet();
$activeSheet->SetCellValue('B2',$a);
$activeSheet->SetCellValue('B3',$b);
$activeSheet->SetCellValue('C4',"=B2+B3");
$C4 = $activeSheet ->getCell('C4')->getCalculatedValue();
echo "C4:$C4<br/>";
}
最后,我称这个函数为
Test(10, 20);
Test(40, 70);
Test(30, 80);
但是,结果是
C4:30
C4:30
C4:30
为什么 getCalculatedValue()不会更改结果?看起来这个函数只获得第一个值。
答案 0 :(得分:2)
您可以更改结果,但出于性能原因,计算引擎会在计算公式计算结果后对其进行缓存。如果要更改基础数据,则必须在再次请求计算值之前刷新该缓存:
PHPExcel_Calculation::getInstance()->clearCalculationCache();
或
PHPExcel_Calculation::flushInstance();
您还可以更改此默认行为 - 以便在向计算引擎发出任何其他请求之前不会缓存结果:
PHPExcel_Calculation::getInstance()->setCalculationCacheEnabled(FALSE);
答案 1 :(得分:0)
如果您使用phpExcel,则不需要它。你只能这样做:
设置标题一次。
$objPHPExcel = new PHPExcel();
$activeSheet = $objPHPExcel->getActiveSheet();
然后使用它
`function Test($ a,$ b){
$activeSheet->SetCellValue('B2',$a);
$activeSheet->SetCellValue('B3',$b);
$activeSheet->SetCellValue('C4',"=B2+B3");
}`
广告设置您的值Test(10, 30);
如果设置了coll并且不更改单元格,则覆盖。如果你需要做一个清单
function Test($a, $b) {
$i++;
$activeSheet->SetCellValue('B2',$a);
$activeSheet->SetCellValue('B3',$b);
$activeSheet->SetCellValue('C'.$i,"=B2+B3");
}
并设置值Test(10, 30);
然后输出40