From 3a6f7ed18a9cf22e2b16bdabc3b41b833e1a8ad3 Mon Sep 17 00:00:00 2001 From: GreatHumorist Date: Mon, 18 Sep 2017 16:03:32 +0800 Subject: [PATCH 1/9] Added xml reader hyperlink support --- src/PhpSpreadsheet/Reader/Xml.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/PhpSpreadsheet/Reader/Xml.php b/src/PhpSpreadsheet/Reader/Xml.php index d9368d02f3..338621ec67 100644 --- a/src/PhpSpreadsheet/Reader/Xml.php +++ b/src/PhpSpreadsheet/Reader/Xml.php @@ -595,6 +595,10 @@ public function loadIntoExisting($pFilename, Spreadsheet $spreadsheet) } } + if (isset($cell_ss['HRef'])) { + $spreadsheet->getActiveSheet()->getCell($cellRange)->getHyperlink()->setUrl($cell_ss['HRef']); + } + if ((isset($cell_ss['MergeAcross'])) || (isset($cell_ss['MergeDown']))) { $columnTo = $columnID; if (isset($cell_ss['MergeAcross'])) { From 8f8bbba5438e8ddcd592bf311621099909713c64 Mon Sep 17 00:00:00 2001 From: GreatHumorist Date: Wed, 20 Sep 2017 23:41:34 +0800 Subject: [PATCH 2/9] Support for read Hyperlink for xml added unit test and change log --- CHANGELOG.md | 1 + samples/templates/Excel2003XMLTest.xml | 4 +- src/PhpSpreadsheet/Reader/Xml.php | 2 +- .../Reader/XEEValidatorTest.php | 39 +++++++++++++++++++ 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e409ce8c53..d2108afede 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Added - Support for chart fill color - @CrazyBite [#158](https://github.com/PHPOffice/PhpSpreadsheet/pull/158) +- Support for read Hyperlink for xml - [@GreatHumorist](https://github.com/GreatHumorist) [#223](https://github.com/PHPOffice/PhpSpreadsheet/pull/223) ### Changed diff --git a/samples/templates/Excel2003XMLTest.xml b/samples/templates/Excel2003XMLTest.xml index d386a0cfd4..91fa0b409a 100644 --- a/samples/templates/Excel2003XMLTest.xml +++ b/samples/templates/Excel2003XMLTest.xml @@ -549,7 +549,9 @@ AE - + + PHPExcel + diff --git a/src/PhpSpreadsheet/Reader/Xml.php b/src/PhpSpreadsheet/Reader/Xml.php index 338621ec67..2fd7ef6cdf 100644 --- a/src/PhpSpreadsheet/Reader/Xml.php +++ b/src/PhpSpreadsheet/Reader/Xml.php @@ -598,7 +598,7 @@ public function loadIntoExisting($pFilename, Spreadsheet $spreadsheet) if (isset($cell_ss['HRef'])) { $spreadsheet->getActiveSheet()->getCell($cellRange)->getHyperlink()->setUrl($cell_ss['HRef']); } - + if ((isset($cell_ss['MergeAcross'])) || (isset($cell_ss['MergeDown']))) { $columnTo = $columnID; if (isset($cell_ss['MergeAcross'])) { diff --git a/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php b/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php index 372e51bbcf..18e263750e 100644 --- a/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php +++ b/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php @@ -2,11 +2,35 @@ namespace PhpOffice\PhpSpreadsheetTests\Reader; +use PhpOffice\PhpSpreadsheet\Cell\DataType; use PhpOffice\PhpSpreadsheet\Reader\BaseReader; +use PhpOffice\PhpSpreadsheet\Reader\Xml; +use PhpOffice\PhpSpreadsheet\Spreadsheet; use PHPUnit_Framework_TestCase; class XEEValidatorTest extends PHPUnit_Framework_TestCase { + /** + * @var Spreadsheet + */ + private $spreadsheetXEETest; + + /** + * @return Spreadsheet + */ + protected function loadXEETestFile() + { + if (!$this->spreadsheetXEETest) { + $filename = __DIR__ . '/../../../samples/templates/Excel2003XMLTest.xml'; + + // Load into this instance + $reader = new Xml(); + $this->spreadsheetXEETest = $reader->loadIntoExisting($filename, new Spreadsheet()); + } + + return $this->spreadsheetXEETest; + } + /** * @dataProvider providerInvalidXML * @expectedException \PhpOffice\PhpSpreadsheet\Reader\Exception @@ -53,4 +77,19 @@ public function providerValidXML() return $tests; } + + /** + * Check if it can read XML Hyperlink correctly. + */ + public function testReadHyperlinks() + { + $spreadsheet = $this->loadXEETestFile(); + $firstSheet = $spreadsheet->getSheet(0); + + $hyperlink = $firstSheet->getCell('L1'); + + $this->assertEquals(DataType::TYPE_STRING, $hyperlink->getDataType()); + $this->assertEquals('PHPExcel', $hyperlink->getValue()); + $this->assertEquals('http://www.phpexcel.net/', $hyperlink->getHyperlink()->getUrl()); + } } From dd5c859e8b5cfd4e975b74a24312b98799fe1327 Mon Sep 17 00:00:00 2001 From: GreatHumorist Date: Wed, 20 Sep 2017 23:45:19 +0800 Subject: [PATCH 3/9] Resolve conflict --- tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php b/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php index 18e263750e..abfc088537 100644 --- a/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php +++ b/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php @@ -4,6 +4,7 @@ use PhpOffice\PhpSpreadsheet\Cell\DataType; use PhpOffice\PhpSpreadsheet\Reader\BaseReader; +use PhpOffice\PhpSpreadsheet\Reader\Exception; use PhpOffice\PhpSpreadsheet\Reader\Xml; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PHPUnit_Framework_TestCase; From e1ad90c5c496148821e9bb26bb28a2d1364998e3 Mon Sep 17 00:00:00 2001 From: GreatHumorist Date: Thu, 21 Sep 2017 00:12:50 +0800 Subject: [PATCH 4/9] Revert "Resolve conflict" This reverts commit dd5c859e8b5cfd4e975b74a24312b98799fe1327. --- tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php b/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php index abfc088537..18e263750e 100644 --- a/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php +++ b/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php @@ -4,7 +4,6 @@ use PhpOffice\PhpSpreadsheet\Cell\DataType; use PhpOffice\PhpSpreadsheet\Reader\BaseReader; -use PhpOffice\PhpSpreadsheet\Reader\Exception; use PhpOffice\PhpSpreadsheet\Reader\Xml; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PHPUnit_Framework_TestCase; From baf0cf3365ef466dde3196b0f85de950c057f6cc Mon Sep 17 00:00:00 2001 From: GreatHumorist Date: Thu, 21 Sep 2017 00:13:08 +0800 Subject: [PATCH 5/9] Revert "Support for read Hyperlink for xml" This reverts commit 8f8bbba5438e8ddcd592bf311621099909713c64. --- CHANGELOG.md | 1 - samples/templates/Excel2003XMLTest.xml | 4 +- src/PhpSpreadsheet/Reader/Xml.php | 2 +- .../Reader/XEEValidatorTest.php | 39 ------------------- 4 files changed, 2 insertions(+), 44 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d2108afede..e409ce8c53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Added - Support for chart fill color - @CrazyBite [#158](https://github.com/PHPOffice/PhpSpreadsheet/pull/158) -- Support for read Hyperlink for xml - [@GreatHumorist](https://github.com/GreatHumorist) [#223](https://github.com/PHPOffice/PhpSpreadsheet/pull/223) ### Changed diff --git a/samples/templates/Excel2003XMLTest.xml b/samples/templates/Excel2003XMLTest.xml index 91fa0b409a..d386a0cfd4 100644 --- a/samples/templates/Excel2003XMLTest.xml +++ b/samples/templates/Excel2003XMLTest.xml @@ -549,9 +549,7 @@ AE - - PHPExcel - + diff --git a/src/PhpSpreadsheet/Reader/Xml.php b/src/PhpSpreadsheet/Reader/Xml.php index 2fd7ef6cdf..338621ec67 100644 --- a/src/PhpSpreadsheet/Reader/Xml.php +++ b/src/PhpSpreadsheet/Reader/Xml.php @@ -598,7 +598,7 @@ public function loadIntoExisting($pFilename, Spreadsheet $spreadsheet) if (isset($cell_ss['HRef'])) { $spreadsheet->getActiveSheet()->getCell($cellRange)->getHyperlink()->setUrl($cell_ss['HRef']); } - + if ((isset($cell_ss['MergeAcross'])) || (isset($cell_ss['MergeDown']))) { $columnTo = $columnID; if (isset($cell_ss['MergeAcross'])) { diff --git a/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php b/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php index 18e263750e..372e51bbcf 100644 --- a/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php +++ b/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php @@ -2,35 +2,11 @@ namespace PhpOffice\PhpSpreadsheetTests\Reader; -use PhpOffice\PhpSpreadsheet\Cell\DataType; use PhpOffice\PhpSpreadsheet\Reader\BaseReader; -use PhpOffice\PhpSpreadsheet\Reader\Xml; -use PhpOffice\PhpSpreadsheet\Spreadsheet; use PHPUnit_Framework_TestCase; class XEEValidatorTest extends PHPUnit_Framework_TestCase { - /** - * @var Spreadsheet - */ - private $spreadsheetXEETest; - - /** - * @return Spreadsheet - */ - protected function loadXEETestFile() - { - if (!$this->spreadsheetXEETest) { - $filename = __DIR__ . '/../../../samples/templates/Excel2003XMLTest.xml'; - - // Load into this instance - $reader = new Xml(); - $this->spreadsheetXEETest = $reader->loadIntoExisting($filename, new Spreadsheet()); - } - - return $this->spreadsheetXEETest; - } - /** * @dataProvider providerInvalidXML * @expectedException \PhpOffice\PhpSpreadsheet\Reader\Exception @@ -77,19 +53,4 @@ public function providerValidXML() return $tests; } - - /** - * Check if it can read XML Hyperlink correctly. - */ - public function testReadHyperlinks() - { - $spreadsheet = $this->loadXEETestFile(); - $firstSheet = $spreadsheet->getSheet(0); - - $hyperlink = $firstSheet->getCell('L1'); - - $this->assertEquals(DataType::TYPE_STRING, $hyperlink->getDataType()); - $this->assertEquals('PHPExcel', $hyperlink->getValue()); - $this->assertEquals('http://www.phpexcel.net/', $hyperlink->getHyperlink()->getUrl()); - } } From a553c64e892147c66d7afb54f406ccc30ce9ae9c Mon Sep 17 00:00:00 2001 From: GreatHumorist Date: Thu, 21 Sep 2017 00:21:11 +0800 Subject: [PATCH 6/9] Recommit --- .../Reader/XEEValidatorTest.php | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php b/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php index 372e51bbcf..c095192a42 100644 --- a/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php +++ b/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php @@ -2,11 +2,34 @@ namespace PhpOffice\PhpSpreadsheetTests\Reader; +use PhpOffice\PhpSpreadsheet\Cell\DataType; use PhpOffice\PhpSpreadsheet\Reader\BaseReader; +use PhpOffice\PhpSpreadsheet\Spreadsheet; use PHPUnit_Framework_TestCase; class XEEValidatorTest extends PHPUnit_Framework_TestCase { + /** + * @var Spreadsheet + */ + private $spreadsheetXEETest; + + /** + * @return Spreadsheet + */ + protected function loadXEETestFile() + { + if (!$this->spreadsheetXEETest) { + $filename = __DIR__ . '/../../../samples/templates/Excel2003XMLTest.xml'; + + // Load into this instance + $reader = new Xml(); + $this->spreadsheetXEETest = $reader->loadIntoExisting($filename, new Spreadsheet()); + } + + return $this->spreadsheetXEETest; + } + /** * @dataProvider providerInvalidXML * @expectedException \PhpOffice\PhpSpreadsheet\Reader\Exception @@ -53,4 +76,19 @@ public function providerValidXML() return $tests; } + + /** + * Check if it can read XML Hyperlink correctly. + */ + public function testReadHyperlinks() + { + $spreadsheet = $this->loadXEETestFile(); + $firstSheet = $spreadsheet->getSheet(0); + + $hyperlink = $firstSheet->getCell('L1'); + + $this->assertEquals(DataType::TYPE_STRING, $hyperlink->getDataType()); + $this->assertEquals('PHPExcel', $hyperlink->getValue()); + $this->assertEquals('http://www.phpexcel.net/', $hyperlink->getHyperlink()->getUrl()); + } } From c78437a870df3adc749a4c9712daebcd86c1d4b3 Mon Sep 17 00:00:00 2001 From: GreatHumorist Date: Thu, 21 Sep 2017 00:27:09 +0800 Subject: [PATCH 7/9] Recommit --- CHANGELOG.md | 1 + samples/templates/Excel2003XMLTest.xml | 4 +++- src/PhpSpreadsheet/Reader/Xml.php | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e409ce8c53..d2108afede 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Added - Support for chart fill color - @CrazyBite [#158](https://github.com/PHPOffice/PhpSpreadsheet/pull/158) +- Support for read Hyperlink for xml - [@GreatHumorist](https://github.com/GreatHumorist) [#223](https://github.com/PHPOffice/PhpSpreadsheet/pull/223) ### Changed diff --git a/samples/templates/Excel2003XMLTest.xml b/samples/templates/Excel2003XMLTest.xml index d386a0cfd4..91fa0b409a 100644 --- a/samples/templates/Excel2003XMLTest.xml +++ b/samples/templates/Excel2003XMLTest.xml @@ -549,7 +549,9 @@ AE - + + PHPExcel + diff --git a/src/PhpSpreadsheet/Reader/Xml.php b/src/PhpSpreadsheet/Reader/Xml.php index 338621ec67..2fd7ef6cdf 100644 --- a/src/PhpSpreadsheet/Reader/Xml.php +++ b/src/PhpSpreadsheet/Reader/Xml.php @@ -598,7 +598,7 @@ public function loadIntoExisting($pFilename, Spreadsheet $spreadsheet) if (isset($cell_ss['HRef'])) { $spreadsheet->getActiveSheet()->getCell($cellRange)->getHyperlink()->setUrl($cell_ss['HRef']); } - + if ((isset($cell_ss['MergeAcross'])) || (isset($cell_ss['MergeDown']))) { $columnTo = $columnID; if (isset($cell_ss['MergeAcross'])) { From bad1b3398099274d899428ae84bfcef574d4b497 Mon Sep 17 00:00:00 2001 From: GreatHumorist Date: Thu, 21 Sep 2017 10:33:57 +0800 Subject: [PATCH 8/9] Fix code style and update the features cross reference.md --- docs/references/features-cross-reference.md | 2 +- samples/templates/Excel2003XMLTest.xml | 4 ++-- tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php | 9 +++++---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/references/features-cross-reference.md b/docs/references/features-cross-reference.md index 7ab9d068c6..330f9823c2 100644 --- a/docs/references/features-cross-reference.md +++ b/docs/references/features-cross-reference.md @@ -1167,7 +1167,7 @@ Hyperlinks ✔ ✔ - ✖ + ✔ ✔ ✖ ✖ diff --git a/samples/templates/Excel2003XMLTest.xml b/samples/templates/Excel2003XMLTest.xml index 91fa0b409a..fb75ab06a8 100644 --- a/samples/templates/Excel2003XMLTest.xml +++ b/samples/templates/Excel2003XMLTest.xml @@ -549,8 +549,8 @@ AE - - PHPExcel + + PhpSpreadsheet diff --git a/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php b/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php index c095192a42..59eabdf21f 100644 --- a/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php +++ b/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php @@ -4,6 +4,7 @@ use PhpOffice\PhpSpreadsheet\Cell\DataType; use PhpOffice\PhpSpreadsheet\Reader\BaseReader; +use PhpOffice\PhpSpreadsheet\Reader\Xml; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PHPUnit_Framework_TestCase; @@ -20,11 +21,11 @@ class XEEValidatorTest extends PHPUnit_Framework_TestCase protected function loadXEETestFile() { if (!$this->spreadsheetXEETest) { - $filename = __DIR__ . '/../../../samples/templates/Excel2003XMLTest.xml'; + $filename = '../samples/templates/Excel2003XMLTest.xml'; // Load into this instance $reader = new Xml(); - $this->spreadsheetXEETest = $reader->loadIntoExisting($filename, new Spreadsheet()); + $this->spreadsheetXEETest = $reader->load($filename); } return $this->spreadsheetXEETest; @@ -88,7 +89,7 @@ public function testReadHyperlinks() $hyperlink = $firstSheet->getCell('L1'); $this->assertEquals(DataType::TYPE_STRING, $hyperlink->getDataType()); - $this->assertEquals('PHPExcel', $hyperlink->getValue()); - $this->assertEquals('http://www.phpexcel.net/', $hyperlink->getHyperlink()->getUrl()); + $this->assertEquals('PhpSpreadsheet', $hyperlink->getValue()); + $this->assertEquals('http://phpspreadsheet.readthedocs.io/', $hyperlink->getHyperlink()->getUrl()); } } From 0fefd2139d87e9d958e87f0979998a2e44f02c0d Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Fri, 22 Sep 2017 14:19:09 +0900 Subject: [PATCH 9/9] Update features-cross-reference.md --- docs/references/features-cross-reference.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/references/features-cross-reference.md b/docs/references/features-cross-reference.md index 330f9823c2..a02558b3c9 100644 --- a/docs/references/features-cross-reference.md +++ b/docs/references/features-cross-reference.md @@ -1167,7 +1167,7 @@ Hyperlinks ✔ ✔ - ✔ + ✔ ✔ ✖ ✖ @@ -1496,4 +1496,4 @@ 1. Only BIFF8 files support Rich Text. Prior to that, comments could only be plain text -2. Only BIFF8 files support alignment and rotation. Prior to that, comments could only be unformatted text \ No newline at end of file +2. Only BIFF8 files support alignment and rotation. Prior to that, comments could only be unformatted text