在PHPExcel中复制的行中更新单元格引用(PHPSpreadsheet)

时间:2016-12-31 13:04:18

标签: php phpexcel phpexcel-1.8.0

我使用以下代码复制PHPSpreadsheet中的行。但是,我想更改复制行中的公式引用以反映新的行号。 (例如(A1-B1),(A2-B2),A3-B3等)任何建议?

function copyRowFull(&$ws_from, &$ws_to, $row_from, $row_to) {
  $ws_to->getRowDimension($row_to)->setRowHeight($ws_from->getRowDimension($row_from)->getRowHeight());
  $lastColumn = $ws_from->getHighestColumn();
  ++$lastColumn;
  for ($c = 'A'; $c != $lastColumn; ++$c) {
    $cell_from = $ws_from->getCell($c.$row_from);
    $cell_to = $ws_to->getCell($c.$row_to);
    $cell_to->setXfIndex($cell_from->getXfIndex()); 
    $cell_to->setValue($cell_from->getValue());
  }
}

1 个答案:

答案 0 :(得分:0)

您应该能够使用updateFormulaReferences()类的PHPExcel_ReferenceHelper方法更新公式字符串中的单元格引用

/**
 * Update references within formulas
 *
 * @param    string    $pFormula    Formula to update
 * @param    int        $pBefore    Insert before this one
 * @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
 */