如何将现有的 XWPFParagraph 插入到 org.apache.poi.xwpf.usermodel.XWPFDocument 的其他 XWPFParagraph 之间的特定位置?

问题描述 投票:0回答:2

最初我有一个 DOCX 模板文档。所以我得到 org.apache.poi.xwpf.usermodel.XWPFDocument 出来,假设它有 5 个 XWPFParagraph,例如:

<w:document>
  <w:body>
    <w:p> ... </w:p>
    <w:p> ... </w:p>
    <w:p> ... </w:p>
    <w:p> ... </w:p>
    <w:p> ... </w:p>
  </w:body>
</w:document>

然后我从另一个 DOCX 文件中获取一个 XWPFParagraph,我需要将其插入到初始文档的第二个和第三个 XWPFParagraph 之间。像这样:

<w:document>
  <w:body>
    <w:p> ... </w:p>
    <w:p> ... </w:p>
    <w:p> inserted Paragraph  </w:p>
    <w:p> ... </w:p>
    <w:p> ... </w:p>
    <w:p> ... </w:p>
  </w:body>
</w:document>

我该怎么做?

我可以说我尝试过的: - 我尝试使用 insertNewParagraph() 方法,但它看起来像是在创建新段落,但我需要插入从其他文档中获取的现有段落。

private void insertParagraphAfter(XWPFParagraph p1, XWPFParagraph p2) {
    XWPFDocument doc = p1.getDocument();
    XmlCursor cursor = p1.getCTP().newCursor();
    XWPFParagraph newP = doc.insertNewParagraph(cursor);
    newP = p2;
}

但它似乎不起作用。

java apache-poi
2个回答
1
投票

找到解决方案,

  1. 我可以将其插入到当前段落之前,而不是之后;
  2. 需要显式复制所有运行


0
投票

@雷纳特·加廷

对我来说,插入一个新段落会给我“并发修改异常”,任何线索

© www.soinside.com 2019 - 2024. All rights reserved.