diff --git a/src/ConverterHelpers.php b/src/ConverterHelpers.php new file mode 100644 index 0000000..dc412c2 --- /dev/null +++ b/src/ConverterHelpers.php @@ -0,0 +1,24 @@ +styleOption = $styleOption; - $this->columns = $columns; + if(!is_null($columns)){ + $tmpColumns = []; + foreach($columns as $col){ + if(str_contains($col, "-")){ + $tmpColumns = array_merge($tmpColumns, ConverterHelpers::RangeToColumnArray($col)); + } + else{ + array_push($tmpColumns, $col); + } + } + $this->columns = $tmpColumns; + } $this->scale = $scale; $this->worksheet = $worksheet; $this->html = ''; @@ -190,7 +201,8 @@ class HtmlConverter { do { ++$row; $array = $this->worksheet->rangeToArray($minCol.$row.':'.$maxCol.$row); - $value = trim(implode($array)); + $valString = implode($array[$row]); + $value = trim($valString); } while ($row <= $highestRow && is_null($value)); ++$row; return $row; diff --git a/src/exceptions/MalformattedRangeStringException.php b/src/exceptions/MalformattedRangeStringException.php new file mode 100644 index 0000000..9dbcd70 --- /dev/null +++ b/src/exceptions/MalformattedRangeStringException.php @@ -0,0 +1,9 @@ +assertSame('Y|Z|AA|AB|AC', $res); + } +} \ No newline at end of file diff --git a/tests/HtmlConverterTest.php b/tests/HtmlConverterTest.php index 8490eb1..f87a01a 100644 --- a/tests/HtmlConverterTest.php +++ b/tests/HtmlConverterTest.php @@ -1,4 +1,5 @@ assertSame($expected, $res); } + public function testHtmlPropIsSameWithRange(): void{ + $conv = HtmlConverter::fromFilepath( + 'tests/assets/test.xlsx', + styleOption: StyleOptions::WITH_COLUMN_WIDTH | StyleOptions::COLUMN_WIDTH_PROPORTIONAL, + worksheetName:'TestTable', + columns:['A', 'B-F'], + scale: 1.1); + $res = $conv->getHtml(); + $expected = file_get_contents('tests/assets/results/testProp.html'); + $this->assertSame($expected, $res); + } //Exceptions public function testCannotReadFromUnknownSheet(): void{ @@ -72,29 +84,4 @@ final class HtmlConverterTest extends TestCase{ columns:['A', 'B', 'C', 'D', 'E', 'F'], scale: 1.1); } - public function testCannotReadFromUnknownColumn(): void{ - $this->expectExceptionMessage('Invalid cell coordinate -1'); - $conv = HtmlConverter::fromFilepath( - 'tests/assets/test.xlsx', - styleOption: StyleOptions::WITH_COLUMN_WIDTH | StyleOptions::COLUMN_WIDTH_PROPORTIONAL, - worksheetName:'TestTable', - columns:['A', 'B', 'C', 'D', 'E', 'F', '-1'], - scale: 1.1); - $res = $conv->getHtml(); - } - public function testColumnRangeWorkingAsExpected(): void{ - $columnRange = function($startColumn, $endColumn) { - ++$endColumn; - for($column = $startColumn; $column !== $endColumn; ++$column) { - yield $column; - } - }; - - $res = ''; - foreach($columnRange('Y', 'AC') as $column) { - $res .= '|'.$column; - } - - $this->assertSame('|Y|Z|AA|AB|AC', $res); - } } \ No newline at end of file