在 PhpExcel 中动态复制公式
Duplicate Formula Dynamically in PhpExcel
我是 PHPExcel 新手。我想用更新的单元格值复制公式。例如,
在单元格 C1 中,公式为 (A1 * B1)。
我正在将单元格范围 A1:C1 中的行复制到 A5:C5.
单元格值复制成功。但是公式没有更新。我想将公式更新为 (A2 * B2)、(A3 * B3) 等。
注意:我无法手动更新公式。我能做的唯一方法是,阅读公式,解析它,然后相应地更新单元格值。
我试过了,
我已将私有 processTokenStack 函数更改为 public,但它抛出 "Call to Undefined method PHPExcel_Calculation::processTokenStack() " 错误。
请指导我。
谢谢
PHPExcel 在 PHPExcel_ReferenceHelper
class 中为此提供了功能(与 insert/delete 行和列时调整单元格引用的功能相同)。
该方法是 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)
我是 PHPExcel 新手。我想用更新的单元格值复制公式。例如,
在单元格 C1 中,公式为 (A1 * B1)。 我正在将单元格范围 A1:C1 中的行复制到 A5:C5.
单元格值复制成功。但是公式没有更新。我想将公式更新为 (A2 * B2)、(A3 * B3) 等。
注意:我无法手动更新公式。我能做的唯一方法是,阅读公式,解析它,然后相应地更新单元格值。
我试过了,
PHPExcel 在 PHPExcel_ReferenceHelper
class 中为此提供了功能(与 insert/delete 行和列时调整单元格引用的功能相同)。
该方法是 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)