mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-09-13 19:46:31 +00:00
Issue 3368 - Absolute References in Cell Formulae should always be updated when inserting/deleting rows/columns
This commit is contained in:
@@ -118,7 +118,7 @@ class CellReferenceHelper
|
||||
{
|
||||
$newColumn = Coordinate::stringFromColumnIndex(min($newColumnIndex + $this->numberOfColumns, AddressRange::MAX_COLUMN_INT));
|
||||
|
||||
return $absoluteColumn . $newColumn;
|
||||
return "{$absoluteColumn}{$newColumn}";
|
||||
}
|
||||
|
||||
protected function updateRowReference(int $newRowIndex, string $absoluteRow): string
|
||||
@@ -126,6 +126,6 @@ class CellReferenceHelper
|
||||
$newRow = $newRowIndex + $this->numberOfRows;
|
||||
$newRow = ($newRow > AddressRange::MAX_ROW) ? AddressRange::MAX_ROW : $newRow;
|
||||
|
||||
return $absoluteRow . (string) $newRow;
|
||||
return "{$absoluteRow}{$newRow}";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -453,7 +453,7 @@ class ReferenceHelper
|
||||
if ($cell->getDataType() === DataType::TYPE_FORMULA) {
|
||||
// Formula should be adjusted
|
||||
$worksheet->getCell($newCoordinate)
|
||||
->setValue($this->updateFormulaReferences($cell->getValue(), $beforeCellAddress, $numberOfColumns, $numberOfRows, $worksheet->getTitle()));
|
||||
->setValue($this->updateFormulaReferences($cell->getValue(), $beforeCellAddress, $numberOfColumns, $numberOfRows, $worksheet->getTitle(), true));
|
||||
} else {
|
||||
// Formula should not be adjusted
|
||||
$worksheet->getCell($newCoordinate)->setValueExplicit($cell->getValue(), $cell->getDataType());
|
||||
@@ -463,10 +463,10 @@ class ReferenceHelper
|
||||
$worksheet->getCellCollection()->delete($coordinate);
|
||||
} else {
|
||||
/* We don't need to update styles for rows/columns before our insertion position,
|
||||
but we do still need to adjust any formulae in those cells */
|
||||
but we do still need to adjust any formulae in those cells */
|
||||
if ($cell->getDataType() === DataType::TYPE_FORMULA) {
|
||||
// Formula should be adjusted
|
||||
$cell->setValue($this->updateFormulaReferences($cell->getValue(), $beforeCellAddress, $numberOfColumns, $numberOfRows, $worksheet->getTitle()));
|
||||
$cell->setValue($this->updateFormulaReferences($cell->getValue(), $beforeCellAddress, $numberOfColumns, $numberOfRows, $worksheet->getTitle(), true));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user