Merge pull request #2847 from PHPOffice/CellRange-Validation-Performance-Tweak

Minor performance tweaks
This commit is contained in:
Mark Baker 2022-05-24 09:00:51 +02:00 committed by GitHub
commit 7fff764698
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 7 deletions

View File

@ -42,10 +42,9 @@ class Validations
public static function validateCellOrCellRange($cellRange): string public static function validateCellOrCellRange($cellRange): string
{ {
if (is_string($cellRange) || is_numeric($cellRange)) { if (is_string($cellRange) || is_numeric($cellRange)) {
// Convert a single column reference like 'A' to 'A:A' // Convert a single column reference like 'A' to 'A:A',
$cellRange = (string) preg_replace('/^([A-Z]+)$/', '${1}:${1}', (string) $cellRange); // a single row reference like '1' to '1:1'
// Convert a single row reference like '1' to '1:1' $cellRange = (string) preg_replace('/^([A-Z]+|\d+)$/', '${1}:${1}', (string) $cellRange);
$cellRange = (string) preg_replace('/^(\d+)$/', '${1}:${1}', $cellRange);
} elseif (is_object($cellRange) && $cellRange instanceof CellAddress) { } elseif (is_object($cellRange) && $cellRange instanceof CellAddress) {
$cellRange = new CellRange($cellRange, $cellRange); $cellRange = new CellRange($cellRange, $cellRange);
} }
@ -66,9 +65,12 @@ class Validations
[$worksheet, $addressRange] = Worksheet::extractSheetTitle($cellRange, true); [$worksheet, $addressRange] = Worksheet::extractSheetTitle($cellRange, true);
// Convert Column ranges like 'A:C' to 'A1:C1048576' // Convert Column ranges like 'A:C' to 'A1:C1048576'
$addressRange = (string) preg_replace('/^([A-Z]+):([A-Z]+)$/', '${1}1:${2}1048576', $addressRange); // or Row ranges like '1:3' to 'A1:XFD3'
// Convert Row ranges like '1:3' to 'A1:XFD3' $addressRange = (string) preg_replace(
$addressRange = (string) preg_replace('/^(\\d+):(\\d+)$/', 'A${1}:XFD${2}', $addressRange); ['/^([A-Z]+):([A-Z]+)$/i', '/^(\\d+):(\\d+)$/'],
['${1}1:${2}1048576', 'A${1}:XFD${2}'],
$addressRange
);
return empty($worksheet) ? strtoupper($addressRange) : $worksheet . '!' . strtoupper($addressRange); return empty($worksheet) ? strtoupper($addressRange) : $worksheet . '!' . strtoupper($addressRange);
} }