Correct update to named ranges and formulae when inserting/deleting columns/rows
This commit is contained in:
parent
b9ded919fc
commit
b7c025a183
|
|
@ -539,8 +539,17 @@ class ReferenceHelper
|
||||||
// Update workbook: define names
|
// Update workbook: define names
|
||||||
if (count($worksheet->getParent()->getDefinedNames()) > 0) {
|
if (count($worksheet->getParent()->getDefinedNames()) > 0) {
|
||||||
foreach ($worksheet->getParent()->getDefinedNames() as $definedName) {
|
foreach ($worksheet->getParent()->getDefinedNames() as $definedName) {
|
||||||
|
if ($definedName->isFormula() === false) {
|
||||||
|
$asFormula = ($definedName->getValue()[0] === '=') ? '=' : '';
|
||||||
if ($definedName->getWorksheet() !== null && $definedName->getWorksheet()->getHashCode() === $worksheet->getHashCode()) {
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue