在XWPFDocument中插入一个段落

 yangcong 发布于 2023-02-09 13:10

我正在搜索并替换.docx文件,在某些情况下,替换文本包含换行符.我为此尝试了几种技术.第一个是将替换文本拆分为行并执行:

run.setText(lines[0], 0);
for(int x=1; x

结果全部集中在一条线上.

那么我做了一些狩猎,发现这个代码用每行的一组段落替换现有的段落:

private void replaceParagraph(XWPFParagraph p, String[] paragraphs) {
    if (p != null) {
        XWPFDocument doc = p.getDocument();
        for (int i = 0; i < paragraphs.length; i++) {
            XmlCursor cursor = p.getCTP().newCursor();
            XWPFParagraph newP = doc.insertNewParagraph(cursor);
            newP.setAlignment(p.getAlignment());
            newP.getCTP().insertNewR(0).insertNewT(0).setStringValue(paragraphs[i]);
            newP.setNumID(p.getNumID());
        }
        doc.removeBodyElement(doc.getPosOfParagraph(p));
    }
}

问题是insertNewParagraph每次都返回null.这可能是因为段落在表格单元格内部,但我没有将其视为原因.我检查了光标,cursor.isStart()为true,似乎符合文档中的要求.

在光标位置添加一个新段落.游标必须位于文档正文的子元素的XmlCursor.TokenType.START标记上.完成此方法后,光标作为参数传递给新插入段落的XmlCursor.TokenType.END.

我已经仔细检查过doc!= null,我想不出任何其他原因可能会返回null.有什么建议?

1 个回答
  • 结果是解决了这个问题.

    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();
        }
    }
    

    2023-02-09 13:11 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有