Skip to content

Commit 09c66ab

Browse files
author
MarkBaker
committed
Use column address rather than index for remove column loop to eliminate extra math and repeated calls to stringFromColumnIndex()
1 parent 00f570a commit 09c66ab

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

src/PhpSpreadsheet/ReferenceHelper.php

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -923,32 +923,36 @@ private function updateCellRange(string $cellRange = 'A1:A1', bool $includeAbsol
923923

924924
private function clearColumnStrips(int $highestRow, int $beforeColumn, int $numberOfColumns, Worksheet $worksheet): void
925925
{
926-
for ($i = 1; $i <= $highestRow - 1; ++$i) {
927-
for ($j = $beforeColumn - 1 + $numberOfColumns; $j <= $beforeColumn - 2; ++$j) {
928-
$coordinate = Coordinate::stringFromColumnIndex($j + 1) . $i;
926+
$startColumnId = Coordinate::stringFromColumnIndex($beforeColumn + $numberOfColumns);
927+
$endColumnId = Coordinate::stringFromColumnIndex($beforeColumn);
928+
929+
for ($row = 1; $row <= $highestRow - 1; ++$row) {
930+
for ($column = $startColumnId; $column !== $endColumnId; ++$column) {
931+
$coordinate = $column . $row;
929932
$this->clearStripCell($worksheet, $coordinate);
930933
}
931934
}
932935
}
933936

934937
private function clearRowStrips(string $highestColumn, int $beforeColumn, int $beforeRow, int $numberOfRows, Worksheet $worksheet): void
935938
{
936-
$lastColumnIndex = Coordinate::columnIndexFromString($highestColumn) - 1;
939+
$startColumnId = Coordinate::stringFromColumnIndex($beforeColumn);
940+
++$highestColumn;
937941

938-
for ($i = $beforeColumn - 1; $i <= $lastColumnIndex; ++$i) {
939-
for ($j = $beforeRow + $numberOfRows; $j <= $beforeRow - 1; ++$j) {
940-
$coordinate = Coordinate::stringFromColumnIndex($i + 1) . $j;
942+
for ($column = $startColumnId; $column !== $highestColumn; ++$column) {
943+
for ($row = $beforeRow + $numberOfRows; $row <= $beforeRow - 1; ++$row) {
944+
$coordinate = $column . $row;
941945
$this->clearStripCell($worksheet, $coordinate);
942946
}
943947
}
944948
}
945949

946-
private function clearStripCell(Worksheet $worksheet, string $coordinate)
950+
private function clearStripCell(Worksheet $worksheet, string $coordinate): void
947951
{
948-
// TODO - Should also clear down comments, but wait until after comment removal PR-2875 is merged
949952
$worksheet->removeConditionalStyles($coordinate);
950953
$worksheet->setHyperlink($coordinate);
951954
$worksheet->setDataValidation($coordinate);
955+
$worksheet->removeComment($coordinate);
952956

953957
if ($worksheet->cellExists($coordinate)) {
954958
$worksheet->getCell($coordinate)->setValueExplicit(null, DataType::TYPE_NULL);

0 commit comments

Comments
 (0)