Java 在XWPF文档中插入一段

Java 在XWPF文档中插入一段,java,apache-poi,Java,Apache Poi,我正在对.docx文件进行搜索和替换,在某些情况下,替换文本包含换行符。我已经尝试了一些技巧。第一种方法是将替换文本分成几行,然后执行以下操作: run.setText(lines[0], 0); for(int x=1; x<lines.length; x++) { run.addCarriageReturn(); run.setText(lines[x]); } run.setText(行[0],0); 对于(intx=1;x来说,这解决了这个问题 private v

我正在对.docx文件进行搜索和替换,在某些情况下,替换文本包含换行符。我已经尝试了一些技巧。第一种方法是将替换文本分成几行,然后执行以下操作:

run.setText(lines[0], 0);
for(int x=1; x<lines.length; x++) {
    run.addCarriageReturn();
    run.setText(lines[x]);
}
run.setText(行[0],0);

对于(intx=1;x来说,这解决了这个问题

private void createParagraphs(XWPFParagraph p, String[] paragraphs) {
    if (p != null) {
        XWPFDocument doc = p.getDocument();
        XmlCursor cursor = p.getCTP().newCursor();
        for (int i = 0; i < paragraphs.length; i++) {
            XWPFParagraph newP = doc.createParagraph();
            newP.getCTP().setPPr(p.getCTP().getPPr());
            XWPFRun newR = newP.createRun();
            newR.getCTR().setRPr(p.getRuns().get(0).getCTR().getRPr());
            newR.setText(paragraphs[i]);
            XmlCursor c2 = newP.getCTP().newCursor();
            c2.moveXml(cursor);
            c2.dispose();
        }
        cursor.removeXml(); // Removes replacement text paragraph
        cursor.dispose();
    }
}
private void创建段落(XWPFParagraph p,String[]段落){
如果(p!=null){
XWPFDocument doc=p.getDocument();
XmlCursor cursor=p.getCTP().newCursor();
对于(int i=0;i
如果我只是以最简单的形式将run.addcareereturn()改为run.addBreak(),似乎也能解决我的问题。这也节省了我一天半的时间来解决这个问题。太棒了。谢谢你发布答案。这非常有帮助。
private void createParagraphs(XWPFParagraph p, String[] paragraphs) {
    if (p != null) {
        XWPFDocument doc = p.getDocument();
        XmlCursor cursor = p.getCTP().newCursor();
        for (int i = 0; i < paragraphs.length; i++) {
            XWPFParagraph newP = doc.createParagraph();
            newP.getCTP().setPPr(p.getCTP().getPPr());
            XWPFRun newR = newP.createRun();
            newR.getCTR().setRPr(p.getRuns().get(0).getCTR().getRPr());
            newR.setText(paragraphs[i]);
            XmlCursor c2 = newP.getCTP().newCursor();
            c2.moveXml(cursor);
            c2.dispose();
        }
        cursor.removeXml(); // Removes replacement text paragraph
        cursor.dispose();
    }
}