From ea3263650bb10d8646df91a847ac536376de6e46 Mon Sep 17 00:00:00 2001 From: aswinkumar863 Date: Sun, 17 Apr 2022 17:45:17 +0530 Subject: [PATCH] Minimum Table range validation Range must be at least 1 column and 2 rows --- src/PhpSpreadsheet/Worksheet/Table.php | 5 +++++ .../Worksheet/Table/TableTest.php | 20 +++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/PhpSpreadsheet/Worksheet/Table.php b/src/PhpSpreadsheet/Worksheet/Table.php index ee664aa6..0198dd2e 100644 --- a/src/PhpSpreadsheet/Worksheet/Table.php +++ b/src/PhpSpreadsheet/Worksheet/Table.php @@ -190,6 +190,11 @@ class Table throw new PhpSpreadsheetException('Table must be set on a range of cells.'); } + [$width, $height] = Coordinate::rangeDimension($range); + if ($width < 1 || $height < 2) { + throw new PhpSpreadsheetException('The table range must be at least 1 column and 2 rows'); + } + $this->range = $range; // Discard any column ruless that are no longer valid within this range [$rangeStart, $rangeEnd] = Coordinate::rangeBoundaries($this->range); diff --git a/tests/PhpSpreadsheetTests/Worksheet/Table/TableTest.php b/tests/PhpSpreadsheetTests/Worksheet/Table/TableTest.php index c4e5f579..9602f27d 100644 --- a/tests/PhpSpreadsheetTests/Worksheet/Table/TableTest.php +++ b/tests/PhpSpreadsheetTests/Worksheet/Table/TableTest.php @@ -173,14 +173,26 @@ class TableTest extends SetupTeardown self::assertEquals($expectedResult, $result); } - public function testSetRangeInvalidRange(): void + /** + * @dataProvider invalidTableRangeProvider + */ + public function testSetRangeInvalidRange(string $range): void { $this->expectException(PhpSpreadsheetException::class); - $expectedResult = 'A1'; - $sheet = $this->getSheet(); - $table = new Table($expectedResult, $sheet); + new Table($range, $sheet); + } + + public function invalidTableRangeProvider(): array + { + return [ + ['A1'], + ['A1:A1'], + ['B1:A4'], + ['A1:D1'], + ['D1:A1'], + ]; } public function testGetColumnsEmpty(): void