改为使用cell.getHyperlink().getLabel()
。您也可以在此处查看源代码,了解 POI 如何处理 .xls 文件中可能存在的不同类型的超链接。
编辑
好的,所以如果标签与地址不匹配,我们的工作就更难了。这对我来说有点骇人听闻。因此,如果我们检查HSSFHyperlink
类并查看不同的枚举,类似的东西http://www.google.com
将LINK_URL
是我们所期望的类型。类似的东西http://www.bailii.org/databases.html#uk
会解析为 type LINK_DOCUMENT
。但它不是一个文档,它是一个 URL!检查 class HyperlinkRecord
,我在第 245 行之前看到了评论:
Text describing a place in document. In Excel UI, this is appended to the address, (after a '#' delimiter). This field is optional. If present, the HLINK_PLACE must be set.
同一类的第699 行HLINK_PLACE
中isDocumentLink
的 make 返回 true,因此将其分类为文档链接,而不是 URL 链接。
因此,每当链接中出现 # 时,POI 将其视为文档中的链接,这似乎是一种设计行为。不知道我是否称其为错误,只是它不像您希望的那样工作。