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/docs/references/features-cross-reference.md b/docs/references/features-cross-reference.md
index 7ab9d068c6..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
diff --git a/samples/templates/Excel2003XMLTest.xml b/samples/templates/Excel2003XMLTest.xml
index d386a0cfd4..fb75ab06a8 100644
--- a/samples/templates/Excel2003XMLTest.xml
+++ b/samples/templates/Excel2003XMLTest.xml
@@ -549,7 +549,9 @@
AE
|
- |
+
+ PhpSpreadsheet
+ |
|
|
|
diff --git a/src/PhpSpreadsheet/Reader/Xml.php b/src/PhpSpreadsheet/Reader/Xml.php
index d9368d02f3..2fd7ef6cdf 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'])) {
diff --git a/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php b/tests/PhpSpreadsheetTests/Reader/XEEValidatorTest.php
index 372e51bbcf..59eabdf21f 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 = '../samples/templates/Excel2003XMLTest.xml';
+
+ // Load into this instance
+ $reader = new Xml();
+ $this->spreadsheetXEETest = $reader->load($filename);
+ }
+
+ 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('PhpSpreadsheet', $hyperlink->getValue());
+ $this->assertEquals('http://phpspreadsheet.readthedocs.io/', $hyperlink->getHyperlink()->getUrl());
+ }
}