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

时间:2016-03-01 11:26:25

标签: php excel hyperlink phpexcel

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

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

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

$cell->getUrl();

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

  

abc@def.com

我也尝试过获取工具提示,但无济于事。 我可能已经过度思考了,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

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

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

会返回一个PHPExcel超链接对象,它包含getUrl()getTooltip()的方法

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

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

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

检索的单元格值
$friendlyText = $objPHPExcel->getActiveSheet()
    ->getCell('C17')->getValue();

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

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

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