Use column address rather than index for remove column loop to eliminate extra math and repeated calls to stringFromColumnIndex()

This commit is contained in:
MarkBaker 2022-06-15 11:19:02 +02:00
parent 00f570aed5
commit 09c66ab302
1 changed files with 13 additions and 9 deletions

View File

@ -923,9 +923,12 @@ class ReferenceHelper
private function clearColumnStrips(int $highestRow, int $beforeColumn, int $numberOfColumns, Worksheet $worksheet): void private function clearColumnStrips(int $highestRow, int $beforeColumn, int $numberOfColumns, Worksheet $worksheet): void
{ {
for ($i = 1; $i <= $highestRow - 1; ++$i) { $startColumnId = Coordinate::stringFromColumnIndex($beforeColumn + $numberOfColumns);
for ($j = $beforeColumn - 1 + $numberOfColumns; $j <= $beforeColumn - 2; ++$j) { $endColumnId = Coordinate::stringFromColumnIndex($beforeColumn);
$coordinate = Coordinate::stringFromColumnIndex($j + 1) . $i;
for ($row = 1; $row <= $highestRow - 1; ++$row) {
for ($column = $startColumnId; $column !== $endColumnId; ++$column) {
$coordinate = $column . $row;
$this->clearStripCell($worksheet, $coordinate); $this->clearStripCell($worksheet, $coordinate);
} }
} }
@ -933,22 +936,23 @@ class ReferenceHelper
private function clearRowStrips(string $highestColumn, int $beforeColumn, int $beforeRow, int $numberOfRows, Worksheet $worksheet): void private function clearRowStrips(string $highestColumn, int $beforeColumn, int $beforeRow, int $numberOfRows, Worksheet $worksheet): void
{ {
$lastColumnIndex = Coordinate::columnIndexFromString($highestColumn) - 1; $startColumnId = Coordinate::stringFromColumnIndex($beforeColumn);
++$highestColumn;
for ($i = $beforeColumn - 1; $i <= $lastColumnIndex; ++$i) { for ($column = $startColumnId; $column !== $highestColumn; ++$column) {
for ($j = $beforeRow + $numberOfRows; $j <= $beforeRow - 1; ++$j) { for ($row = $beforeRow + $numberOfRows; $row <= $beforeRow - 1; ++$row) {
$coordinate = Coordinate::stringFromColumnIndex($i + 1) . $j; $coordinate = $column . $row;
$this->clearStripCell($worksheet, $coordinate); $this->clearStripCell($worksheet, $coordinate);
} }
} }
} }
private function clearStripCell(Worksheet $worksheet, string $coordinate) private function clearStripCell(Worksheet $worksheet, string $coordinate): void
{ {
// TODO - Should also clear down comments, but wait until after comment removal PR-2875 is merged
$worksheet->removeConditionalStyles($coordinate); $worksheet->removeConditionalStyles($coordinate);
$worksheet->setHyperlink($coordinate); $worksheet->setHyperlink($coordinate);
$worksheet->setDataValidation($coordinate); $worksheet->setDataValidation($coordinate);
$worksheet->removeComment($coordinate);
if ($worksheet->cellExists($coordinate)) { if ($worksheet->cellExists($coordinate)) {
$worksheet->getCell($coordinate)->setValueExplicit(null, DataType::TYPE_NULL); $worksheet->getCell($coordinate)->setValueExplicit(null, DataType::TYPE_NULL);