Correct update to named ranges and formulae when inserting/deleting columns/rows

This commit is contained in:
MarkBaker 2022-09-22 01:10:53 +02:00
parent b9ded919fc
commit b7c025a183
1 changed files with 11 additions and 2 deletions

View File

@ -539,8 +539,17 @@ class ReferenceHelper
// Update workbook: define names
if (count($worksheet->getParent()->getDefinedNames()) > 0) {
foreach ($worksheet->getParent()->getDefinedNames() as $definedName) {
if ($definedName->isFormula() === false) {
$asFormula = ($definedName->getValue()[0] === '=') ? '=' : '';
if ($definedName->getWorksheet() !== null && $definedName->getWorksheet()->getHashCode() === $worksheet->getHashCode()) {
$definedName->setValue($this->updateCellReference($definedName->getValue()));
$definedName->setValue($asFormula . $this->updateCellReference(ltrim($definedName->getValue(), '=')));
}
} else {
$formula = $definedName->getValue();
if ($definedName->getWorksheet() !== null && $definedName->getWorksheet()->getHashCode() === $worksheet->getHashCode()) {
$formula = $this->updateFormulaReferences($formula, $beforeCellAddress, $numberOfColumns, $numberOfRows, $worksheet->getTitle());
$definedName->setValue($formula);
}
}
}
}