« Back to History
Hyperlinks.php
|
20260721_154034.php
Initial Bulk Import
Copy Code
<?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 $worksheet; /** @var string[] */ private array $hyperlinks = []; public function __construct(Worksheet $workSheet) { $this->worksheet = $workSheet; } public function readHyperlinks(SimpleXMLElement $relsWorksheet): void { 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): void { foreach ($worksheetXml->children(Namespaces::MAIN)->hyperlink as $hyperlink) { $this->setHyperlink($hyperlink, $this->worksheet); } } private function setHyperlink(SimpleXMLElement $hyperlink, Worksheet $worksheet): void { // Link url $linkRel = Xlsx::getAttributes($hyperlink, Namespaces::SCHEMA_OFFICE_DOCUMENT); $attributes = Xlsx::getAttributes($hyperlink); foreach (Coordinate::extractAllCellReferencesInRange($attributes->ref) as $cellReference) { $cell = $worksheet->getCell($cellReference); $hyperlinkUrl = ''; if (isset($linkRel['id'])) { $hyperlinkUrl = $this->hyperlinks[(string) $linkRel['id']] ?? ''; } if (isset($attributes['location'])) { if ($hyperlinkUrl === '') { $hyperlinkUrl = 'sheet://' . (string) $attributes['location']; } else { $hyperlinkUrl .= '#' . (string) $attributes['location']; } } $cell->getHyperlink()->setUrl($hyperlinkUrl); // Tooltip if (isset($attributes['tooltip'])) { $cell->getHyperlink()->setTooltip((string) $attributes['tooltip']); } if (isset($attributes['display'])) { $cell->getHyperlink()->setDisplay((string) $attributes['display']); } } } }