创建一个xls文件,其中一个单元格带有超链接。(超链接的地址中应包含数字符号(#)。例如“http://www.bailii.org/databases.html#uk”)
尝试阅读超链接的地址。它将链接地址设为“uk”。地址编号(#)后面的字符只被视为超链接地址。
String strLinkAddress = cell.getHyperlink()。getAddress();
它会将“uk”作为链接地址而不是“http://www.bailii.org/databases.html#uk”返回
答案 0 :(得分:0)
请改用cell.getHyperlink().getLabel()
。您也可以在这里查看source,了解POI如何处理.xls文件中可能存在的各种超链接。
修改强>
好的,如果标签与地址不符,我们的工作就更难了。这有点像我一样的hackish。因此,如果我们检查HSSFHyperlink
类并查看不同的枚举,http://www.google.com
之类的类型LINK_URL
就是我们所期望的类型。 http://www.bailii.org/databases.html#uk
之类的内容将解析为LINK_DOCUMENT
。但它不是一个文件,它是一个URL!检查课程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.
HLINK_PLACE
使同一个类的第699行中的isDocumentLink
返回true,从而将其归类为文档链接,而不是URL链接。
因此,设计行为似乎只要#出现在链接中,POI会将其视为文档中的链接。不知道我是否称这是一个错误,只是它不像你想要的那样工作。