Java 在XWPF文档的任何位置插入XWPF图形

Java 在XWPF文档的任何位置插入XWPF图形,java,apache-poi,Java,Apache Poi,您知道是否有办法在段落完整填充文档(XWPFDocument)中插入段落(XWPFParagraph) 有一种方法可以将文档中已经存在的段落“更改”为另一个段落(XWPFDocument.setparagration()),但我不知道如何将新段落插入文档中的特定位置,而不是以XWPFDocument.createparagration()结尾。我找到了一个解决方案。XWPFDocument有一个丑陋的方法insertNewParague(org.apache.xmlbeans.XmlCursor

您知道是否有办法在段落完整填充文档(XWPFDocument)中插入段落(XWPFParagraph)


有一种方法可以将文档中已经存在的段落“更改”为另一个段落(XWPFDocument.setparagration()),但我不知道如何将新段落插入文档中的特定位置,而不是以XWPFDocument.createparagration()结尾。我找到了一个解决方案。XWPFDocument有一个丑陋的方法insertNewParague(org.apache.xmlbeans.XmlCursor)。正如您所看到的,这个方法从xmlbeans库传递了一个XmlCursor。我们可以这样做:

XmlCursor cursor = par.getCTP().newCursor();
XWPFParagraph new_par = doc.insertNewParagraph(cursor);
new_par.createRun().setText("Stupid text");
Par是XWPF文档文档中的一个XWPF参数。插入的新段落(此代码段中的新段落)将在XmlCursor指向的XmlObject之前插入


希望这对别人有帮助。

我也花了几个小时来解决这个问题。我的问题与上面评论中提到的相同。对我有效的是:

document.getParagraphsIterator()
中找到正确的段落进行插入后,我不得不使用此代码

XmlCursor cur = para.getCTP().newCursor();
cur.toNextSibling();
能够执行
文档插入新段落(cur)

据我所知,我的下一个错误是试图在光标位置插入几个段落。为了实现这一点,我必须添加
cursor.toNextToken()插入后。

您可以使用

xwpfDoc.setParagraph段落(XWPFParagraph段落,int pos)

在特定位置插入段落


有关详细信息,请参见。我尝试了此操作,但
insertnewparagration
返回的段落始终为空。Java运行时环境在运行代码时检测到致命错误:。还在调试,知道吗?对于那些通过“InsertNewParague”获取NULL的用户,没有关于此错误出现原因的其他信息。请确保“par”取自“doc”。InsertNewParague将检查游标是否属于给定文档,如果不是,则返回null。这需要调用
xwpfDoc.createParaguation()
,或者只抛出有问题的错误