PHPExcel 从超链接获取友好名称?

PHPExcel get friendly name from hyperlink?

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

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

我看过很多关于如何使用以下方法从超链接中提取 URL 的示例:

$cell->getUrl();

但我似乎无法弄清楚如何获取友好名称或超链接的第二部分,在本例中为:

abc@def.com

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

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

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

会 return 一个 PHPExcel hyperlink 对象,并且它有 getUrl()getTooltip()[=18 的方法=]

您可以在调用此方法之前测试单元格是否包含 hyperlink:

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

请注意,当您将鼠标悬停在该单元格上时,工具提示是在一个小弹出窗口中显示的文本....实际的 "friendly" 值通常只是您要检索的单元格值使用

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

但是,当使用 MS Excel HYPERLINK() 函数时,只会在执行该函数时创建一个 hyperlink 对象(因此调用 hasHyperlink() 不会 return true),并且单元格的 "raw" 内容是公式,因此 getValue() 将 return 该公式而不是 "friendly" 文本。要获得 link 本身,您需要执行该公式:

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

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