如何用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
相关产品推荐
相关产品推荐

