2012-03-07 33 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