在 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)