Ensure that the sqRef stored for a DataValidation is updated on insert/delete rows/columns, together with the DataValidationCollection value
This commit is contained in:
parent
a846a93f52
commit
1746a5ac26
|
|
@ -38,6 +38,7 @@ and this project adheres to [Semantic Versioning](https://semver.org).
|
|||
|
||||
### Fixed
|
||||
|
||||
- Fix DataValidation sqRef when inserting/deleting rows/columns [Issue #3056](https://github.com/PHPOffice/PhpSpreadsheet/issues/3056) [PR #3074](https://github.com/PHPOffice/PhpSpreadsheet/pull/3074)
|
||||
- Named ranges not usable as anchors in OFFSET function [Issue #3013](https://github.com/PHPOffice/PhpSpreadsheet/issues/3013)
|
||||
- Fully flatten an array [Issue #2955](https://github.com/PHPOffice/PhpSpreadsheet/issues/2955) [PR #2956](https://github.com/PHPOffice/PhpSpreadsheet/pull/2956)
|
||||
- cellExists() and getCell() methods should support UTF-8 named cells [Issue #2987](https://github.com/PHPOffice/PhpSpreadsheet/issues/2987) [PR #2988](https://github.com/PHPOffice/PhpSpreadsheet/pull/2988)
|
||||
|
|
|
|||
|
|
@ -253,10 +253,11 @@ class ReferenceHelper
|
|||
? uksort($aDataValidationCollection, [self::class, 'cellReverseSort'])
|
||||
: uksort($aDataValidationCollection, [self::class, 'cellSort']);
|
||||
|
||||
foreach ($aDataValidationCollection as $cellAddress => $value) {
|
||||
foreach ($aDataValidationCollection as $cellAddress => $dataValidation) {
|
||||
$newReference = $this->updateCellReference($cellAddress);
|
||||
if ($cellAddress !== $newReference) {
|
||||
$worksheet->setDataValidation($newReference, $value);
|
||||
$dataValidation->setSqref($newReference);
|
||||
$worksheet->setDataValidation($newReference, $dataValidation);
|
||||
$worksheet->setDataValidation($cellAddress, null);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -311,6 +311,7 @@ class ReferenceHelperTest extends TestCase
|
|||
|
||||
self::assertFalse($sheet->getCell($cellAddress)->hasDataValidation());
|
||||
self::assertTrue($sheet->getCell('E7')->hasDataValidation());
|
||||
self::assertSame('E7', $sheet->getDataValidation('E7')->getSqref());
|
||||
}
|
||||
|
||||
public function testDeleteRowsWithDataValidation(): void
|
||||
|
|
@ -326,6 +327,7 @@ class ReferenceHelperTest extends TestCase
|
|||
|
||||
self::assertFalse($sheet->getCell($cellAddress)->hasDataValidation());
|
||||
self::assertTrue($sheet->getCell('E3')->hasDataValidation());
|
||||
self::assertSame('E3', $sheet->getDataValidation('E3')->getSqref());
|
||||
}
|
||||
|
||||
public function testDeleteColumnsWithDataValidation(): void
|
||||
|
|
@ -341,6 +343,7 @@ class ReferenceHelperTest extends TestCase
|
|||
|
||||
self::assertFalse($sheet->getCell($cellAddress)->hasDataValidation());
|
||||
self::assertTrue($sheet->getCell('C5')->hasDataValidation());
|
||||
self::assertSame('C5', $sheet->getDataValidation('C5')->getSqref());
|
||||
}
|
||||
|
||||
public function testInsertColumnsWithDataValidation(): void
|
||||
|
|
@ -356,6 +359,7 @@ class ReferenceHelperTest extends TestCase
|
|||
|
||||
self::assertFalse($sheet->getCell($cellAddress)->hasDataValidation());
|
||||
self::assertTrue($sheet->getCell('G5')->hasDataValidation());
|
||||
self::assertSame('G5', $sheet->getDataValidation('G5')->getSqref());
|
||||
}
|
||||
|
||||
private function setDataValidation(Worksheet $sheet, string $cellAddress): void
|
||||
|
|
|
|||
Loading…
Reference in New Issue