我刚刚发现Apache POI库对于使用Java编辑Word文件非常有用.具体来说,我想使用Apache POI的XWPF类编辑DOCX文件.我发现没有适当的方法/文档,我可以这样做.有人可以分步说明,如何替换DOCX文件中的一些文本.
**文本可以在行/段落或表格行/列中
提前致谢 :)
我刚刚在docx4j 2.8.1 的VariableReplace示例中遵循No 2方法,它所做的一切就是删除变量标记$ {}.
我做的步骤:
我只期望'TEST',并且在输出文档中没有标记的情况下获得'变量'.
我正在尝试通过使用类将模板DOCX文档替换为Apache 。我在文档中有标签,并有一个文件来读取替换数据。我的问题是,当我将其扩展名更改为file并打开时,文本行似乎以某种方式分开。例如,文本变成和分开。读取方式与此相同,因为原始格式是这样的。这将在段落中创建2个对象,分别显示和。POIXWPFDocumentJSONDOCXZIPdocument.xml[MEMBER_CONTACT_INFO][MEMBER_CONTACT_INFO]POIDOCXXWPFRun[MEMBER_CONTACT_INFO]
我的问题是,是否有一种方法可以POI通过合并相关运行或类似方法来强制运行像Word一样的运行?或者我该如何解决这个问题?我在替换时匹配运行文本,但找不到标签,因为它被分成2个不同的运行对象。
最好
我有一些占位符的docx文档.现在我应该用其他内容替换它们并保存新的docx文档.我从docx4j开始,发现了这个方法:
public static List<Object> getAllElementFromObject(Object obj, Class<?> toSearch) {
List<Object> result = new ArrayList<Object>();
if (obj instanceof JAXBElement) obj = ((JAXBElement<?>) obj).getValue();
if (obj.getClass().equals(toSearch))
result.add(obj);
else if (obj instanceof ContentAccessor) {
List<?> children = ((ContentAccessor) obj).getContent();
for (Object child : children) {
result.addAll(getAllElementFromObject(child, toSearch));
}
}
return result;
}
public static void findAndReplace(WordprocessingMLPackage doc, String toFind, String replacer){
List<Object> paragraphs = getAllElementFromObject(doc.getMainDocumentPart(), P.class);
for(Object par : paragraphs){
P p = (P) par;
List<Object> texts = getAllElementFromObject(p, Text.class);
for(Object …Run Code Online (Sandbox Code Playgroud)