2012-03-07 30 views
3

不会改变结果,我也得到了与PHPExcel问题如下功能更改输入值,但在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()不会改变结果吗?看起来这个函数只能获得第一个值。

回答

2

您可以更改结果,但出于性能原因,计算引擎会在计算结果后缓存公式计算的结果。如果你想改变基础数据,你必须再次请求计算值之前刷新高速缓存:

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

PHPExcel_Calculation::flushInstance(); 

您也可以更改此默认行为 - 这样的结果是不缓存 - 在发出任何其他请求到计算引擎之前:

PHPExcel_Calculation::getInstance()->setCalculationCacheEnabled(FALSE); 
+0

谢谢您的支持。我再次尝试,结果没有被缓存。 :) – dakiquang 2012-03-08 00:16:47

0

如果您使用phpExcel不需要它它。你只能这样做:

设置标题一次。

$objPHPExcel = new PHPExcel(); $activeSheet = $objPHPExcel->getActiveSheet();

然后用它

'功能测试($ 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