2017-04-24 67 views
0

我是PHPExcel的新手。我想用更新的單元格值複製公式。例如,在PhpExcel中動態複製配方

在單元格C1中,公式爲(A1 * B1)。 我正在複製從單元格區域A1:C1到A5:C5的行。

單元格值已成功複製。但公式沒有更新。我想將公式更新爲(A2 * B2),(A3 * B3)等。

注意:我無法手動更新公式。我能做的唯一方法是,閱讀公式,解析它,然後相應地更新單元格值。

我已經試過了,

How to improve formula calculation with PHPExcel? 我已經改變了私人processTokenStack功能,公衆,但它拋出「調用未定義的方法PHPExcel_Calculation :: processTokenStack()」的錯誤。 請親引導我。 謝謝

回答

0

PHPExcel在PHPExcel_ReferenceHelper類中提供了此功能(與插入/刪除行和列時調整單元格引用的功能相同)。

的方法是updateFormulaReferences(),其具有以下特徵:

/** 
* Update references within formulas 
* 
* @param  string $pFormula Formula to update 
* @param  string $pBefore Insert before this cell 
* @param  int  $pNumCols Number of columns to insert 
* @param  int  $pNumRows Number of rows to insert 
* @param  string $sheetName Worksheet name/title 
* @return string Updated formula 
* @throws PHPExcel_Exception 
*/ 

作爲使用的一個示例:

$formula = '=(A1 * B1)'; 
echo $formula, PHP_EOL; 

$referenceHelper = PHPExcel_ReferenceHelper::getInstance(); 

$adjustedFormula = $referenceHelper->updateFormulaReferences($formula, 'A1', 0, 1); 

echo $adjustedFormula, PHP_EOL; 

將輸出

=(A1 * B1) 
=(A2 * B2)