PHPSpreadsheet能否创建指向命名区域的超链接?
如何在PhpSpreadsheet中通过命名区域创建超链接
首先修正你代码里的语法错误:addNamedRange调用末尾少了一个闭合括号,正确的命名区域创建代码应该是:
$spreadsheet->addNamedRange(new \PhpOffice\PhpSpreadsheet\NamedRange('my_named_range', $worksheet, 'A1'));
要在setUrl()中正确引用命名区域,需要在名称前加上#前缀——这是Excel超链接引用命名区域的标准格式,PhpSpreadsheet完全遵循这个规则。修改后的超链接代码如下:
$spreadsheet->getActiveSheet()->getCell('B1')->getHyperlink()->setUrl('#my_named_range');
这样设置后,单元格B1的超链接就会指向你定义的my_named_range命名区域对应的单元格。当后续重命名工作表时,命名区域会自动关联到重命名后的工作表,超链接不需要做任何修改,依然能正常跳转到目标单元格,刚好满足你不想手动更新超链接的需求。
完整示例代码:
// 假设$spreadsheet和$worksheet已完成实例化 $spreadsheet->addNamedRange(new \PhpOffice\PhpSpreadsheet\NamedRange('my_named_range', $worksheet, 'A1')); $spreadsheet->getActiveSheet()->getCell('B1')->getHyperlink()->setUrl('#my_named_range');
内容的提问来源于stack exchange,提问作者Bdoc
相关产品推荐
相关产品推荐

