From 36d3596f831b3148bbe370e0178c10b4390a00be Mon Sep 17 00:00:00 2001 From: someson Date: Tue, 28 Feb 2017 00:25:25 +0100 Subject: [PATCH] Fixing the Bug reading the ODS Sheetnames (#389) incorrect sequence of arguments creating a Sheet in Reader/ODS/SheetIterator::current() Tests added. --- src/Spout/Reader/ODS/SheetIterator.php | 2 +- tests/Spout/Reader/ODS/SheetTest.php | 51 ++++++++++++++++++ .../ods/two_sheets_with_custom_names.ods | Bin 0 -> 7200 bytes 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 tests/Spout/Reader/ODS/SheetTest.php create mode 100644 tests/resources/ods/two_sheets_with_custom_names.ods diff --git a/src/Spout/Reader/ODS/SheetIterator.php b/src/Spout/Reader/ODS/SheetIterator.php index c23f844..4a311d4 100644 --- a/src/Spout/Reader/ODS/SheetIterator.php +++ b/src/Spout/Reader/ODS/SheetIterator.php @@ -116,7 +116,7 @@ class SheetIterator implements IteratorInterface $escapedSheetName = $this->xmlReader->getAttribute(self::XML_ATTRIBUTE_TABLE_NAME); $sheetName = $this->escaper->unescape($escapedSheetName); - return new Sheet($this->xmlReader, $sheetName, $this->currentSheetIndex, $this->options); + return new Sheet($this->xmlReader, $this->currentSheetIndex, $sheetName, $this->options); } /** diff --git a/tests/Spout/Reader/ODS/SheetTest.php b/tests/Spout/Reader/ODS/SheetTest.php new file mode 100644 index 0000000..1c98347 --- /dev/null +++ b/tests/Spout/Reader/ODS/SheetTest.php @@ -0,0 +1,51 @@ +openFileAndReturnSheets('two_sheets_with_custom_names.ods'); + + $this->assertEquals('Sheet First', $sheets[0]->getName()); + $this->assertEquals(0, $sheets[0]->getIndex()); + + $this->assertEquals('Sheet Last', $sheets[1]->getName()); + $this->assertEquals(1, $sheets[1]->getIndex()); + } + + /** + * @param string $fileName + * @return Sheet[] + */ + private function openFileAndReturnSheets($fileName) + { + $resourcePath = $this->getResourcePath($fileName); + $reader = ReaderFactory::create(Type::ODS); + $reader->open($resourcePath); + + $sheets = []; + foreach ($reader->getSheetIterator() as $sheet) { + $sheets[] = $sheet; + } + + $reader->close(); + + return $sheets; + } +} diff --git a/tests/resources/ods/two_sheets_with_custom_names.ods b/tests/resources/ods/two_sheets_with_custom_names.ods new file mode 100644 index 0000000000000000000000000000000000000000..933a94c1ed5d31679dc607075ce18091faaf8905 GIT binary patch literal 7200 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 C4!_R; literal 0 HcmV?d00001