PHPExcel 从超链接获取友好名称


PHPExcel get friendly name from hyperlink?

我在 excel 工作表中有一个超链接,如下所示。

=HYPERLINK("mailto:abc@def.com","abc@def.com")

我已经看到了很多关于如何使用以下命令从超链接中提取 URL 的示例:

$cell->getUrl();

但是我似乎无法弄清楚如何获取友好名称或超链接的第二部分,在这种情况下将是:

abc@def.com

我也尝试获取工具提示,但无济于事。我可能想多了,所以任何帮助将不胜感激。

如果超链接是使用 PHPExcel 自己的功能填充的,或者直接定义为原始电子表格中的超链接,则

$objPHPExcel->getActiveSheet()
    ->getCell('C17')->getHyperlink();

将返回一个 PHPExcel 超链接对象,该对象具有getUrl()getTooltip()的方法

在调用此方法之前,可以使用以下命令测试单元格是否包含超链接:

$objPHPExcel->getActiveSheet()
    ->getCell('C17')->hasHyperlink();

请注意,工具提示是将鼠标悬停在该单元格上时显示在小弹出窗口中的文本。实际的"友好"值通常只是您使用

$friendlyText = $objPHPExcel->getActiveSheet()
    ->getCell('C17')->getValue();

但是,使用 MS Excel HYPERLINK() 函数时,仅在执行该函数时创建一个超链接对象(因此调用 hasHyperlink() 不会返回 true),并且单元格的"原始"内容是公式,因此getValue()将返回该公式而不是"友好"文本。要获取链接本身,您需要执行该公式:

$hyperlink = $objPHPExcel->getActiveSheet()
    ->getCell('C17')->getCalculatedValue();

这将返回一个 PHPExcel 超链接对象,但它当前只包含 Url,而不是工具提示;尽管我刚刚在 github 上推送了对 1.8 分支的更改,该分支也会在计算公式时填充工具提示