See Release Notes
Long Term Support Release
<?php namespace PhpOffice\PhpSpreadsheet\Reader\Xlsx; use PhpOffice\PhpSpreadsheet\Cell\Coordinate;> use PhpOffice\PhpSpreadsheet\Reader\Xlsx;use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;> use SimpleXMLElement;class Hyperlinks { private $worksheet; private $hyperlinks = []; public function __construct(Worksheet $workSheet) { $this->worksheet = $workSheet; }< public function readHyperlinks(\SimpleXMLElement $relsWorksheet)> public function readHyperlinks(SimpleXMLElement $relsWorksheet): void{< foreach ($relsWorksheet->Relationship as $element) { < if ($element['Type'] == 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink') { < $this->hyperlinks[(string) $element['Id']] = (string) $element['Target'];> foreach ($relsWorksheet->children(Namespaces::RELATIONSHIPS)->Relationship as $elementx) { > $element = Xlsx::getAttributes($elementx); > if ($element->Type == Namespaces::HYPERLINK) { > $this->hyperlinks[(string) $element->Id] = (string) $element->Target;} } }< public function setHyperlinks(\SimpleXMLElement $worksheetXml)> public function setHyperlinks(SimpleXMLElement $worksheetXml): void{< foreach ($worksheetXml->hyperlink as $hyperlink) {> foreach ($worksheetXml->children(Namespaces::MAIN)->hyperlink as $hyperlink) { > if ($hyperlink !== null) {$this->setHyperlink($hyperlink, $this->worksheet); } }> }< private function setHyperlink(\SimpleXMLElement $hyperlink, Worksheet $worksheet)> private function setHyperlink(SimpleXMLElement $hyperlink, Worksheet $worksheet): void{ // Link url< $linkRel = $hyperlink->attributes('http://schemas.openxmlformats.org/officeDocument/2006/relationships');> $linkRel = Xlsx::getAttributes($hyperlink, Namespaces::SCHEMA_OFFICE_DOCUMENT);< foreach (Coordinate::extractAllCellReferencesInRange($hyperlink['ref']) as $cellReference) {> $attributes = Xlsx::getAttributes($hyperlink); > foreach (Coordinate::extractAllCellReferencesInRange($attributes->ref) as $cellReference) {$cell = $worksheet->getCell($cellReference); if (isset($linkRel['id'])) {< $hyperlinkUrl = $this->hyperlinks[(string) $linkRel['id']]; < if (isset($hyperlink['location'])) { < $hyperlinkUrl .= '#' . (string) $hyperlink['location'];> $hyperlinkUrl = $this->hyperlinks[(string) $linkRel['id']] ?? null; > if (isset($attributes['location'])) { > $hyperlinkUrl .= '#' . (string) $attributes['location'];} $cell->getHyperlink()->setUrl($hyperlinkUrl);< } elseif (isset($hyperlink['location'])) { < $cell->getHyperlink()->setUrl('sheet://' . (string) $hyperlink['location']);> } elseif (isset($attributes['location'])) { > $cell->getHyperlink()->setUrl('sheet://' . (string) $attributes['location']);} // Tooltip< if (isset($hyperlink['tooltip'])) { < $cell->getHyperlink()->setTooltip((string) $hyperlink['tooltip']);> if (isset($attributes['tooltip'])) { > $cell->getHyperlink()->setTooltip((string) $attributes['tooltip']);} } } }