0
我有Word文档(这是基于DOCX和XML),我想找到一个表并以编程方式填充它。我正在使用Apache POI,XWPF API。在Apache POI中,是否有方法通过id来访问XWPF元素?
有没有办法通过他们的ID访问XWPF元素?
如何创建XWPF元素之间的唯一性,然后使用java进行更改?
感谢
我有Word文档(这是基于DOCX和XML),我想找到一个表并以编程方式填充它。我正在使用Apache POI,XWPF API。在Apache POI中,是否有方法通过id来访问XWPF元素?
有没有办法通过他们的ID访问XWPF元素?
如何创建XWPF元素之间的唯一性,然后使用java进行更改?
感谢
我已经实现是找到替换功能(from here);
在我的模板docx文件中,我使用“id like texts”,__heading1__,__subjectname__,然后用下面的代码替换它们。对于表格@ axel-richters解决方案可能是合适的。
private void findReplace(String a, String b, CustomXWPFDocument document){
for (XWPFParagraph p : document.getParagraphs()) {
List<XWPFRun> runs = p.getRuns();
if (runs != null) {
for (XWPFRun r : runs) {
String text = r.getText(0);
if (text != null && text.contains(a)) {
text = text.replace(a, b);
r.setText(text, 0);
}
}
}
}
}
从什么'ID'你在说什么?你将如何在Word中设置这些“ID”?在[Table Properties - Alt Text](https://support.office.com/zh-cn/article/Set-or-change-table-properties-3237de89-b287-4379)中,“Word”表可能具有“标题” -8e0c-86d94873b2e0 #__ toc5)。这是否意味着? –
嗨阿克塞尔,是的AFAIK没有身份证。但我想了解其他人如何使用它。替代文字实际上是一个很好的解决方案。但我很好奇其他人如何使用XWPF接口。 – ozkolonur
“Word”文档中除了从上到下的出现以外,没有一般的排序标准。因此,在一般情况下,遍历所有'IBodyElement's,确定你得到了什么'BodyElementType',然后用这个元素做你需要做的事情。在特殊情况下,要求必须清楚。例如,您可以替换占位符文本或填写表单字段,或者查找标题/书签/标题/ alt-texts/...以确定元素。但是对于这个'Word'文档的作者来说,这个要求也必须是清楚的,因为他必须将这些东西写入文档中。 –