You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Simple ODF从ODS单元格提取富文本及URL链接?

提取ODS单元格富文本中的锚点HREF属性

当ODS单元格包含带锚点的富文本时,使用Simple ODF的getStringValue()只能获取纯文本内容,无法提取锚点的href属性。以下是具体解决方案:


核心思路

getStringValue()方法会剥离所有富文本格式信息,仅返回纯文本。要获取锚点URL,需直接操作单元格对应的ODF底层XML元素,通过查找text:a(超链接节点)提取xlink:href属性。

代码实现

InputStream stream = new URL("your-url-here").openStream();

SpreadsheetDocument doc = SpreadsheetDocument.loadDocument(stream);
Row row = doc.getSheetByIndex(0).getRowIterator().next();
Cell cell = row.getCellByIndex(5);

// 获取单元格的底层ODF元素
OdfElement cellElement = cell.getOdfElement();

// 使用XPath查找单元格内所有超链接节点
XPath xpath = OdfPackage.getManifestXPath();
NodeList hyperlinkNodes = (NodeList) xpath.evaluate(".//text:a", cellElement, XPathConstants.NODESET);

// 遍历提取每个锚点的href属性
if (hyperlinkNodes.getLength() > 0) {
    for (int i = 0; i < hyperlinkNodes.getLength(); i++) {
        TextHyperlink hyperlink = (TextHyperlink) hyperlinkNodes.item(i);
        String href = hyperlink.getXlinkHrefAttribute();
        // 处理获取到的URL,例如打印或存储
        System.out.println("提取到的锚点URL: " + href);
    }
}

// 关闭资源
doc.close();
stream.close();

依赖说明

无需变更原有依赖,继续使用Simple ODF包即可:

<!-- https://mvnrepository.com/artifact/org.odftoolkit/simple-odf -->
<dependency>
    <groupId>org.odftoolkit</groupId>
    <artifactId>simple-odf</artifactId>
    <version>0.9.0</version>
</dependency>

内容的提问来源于stack exchange,提问作者Hasan Can Saral

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 15:24:50