POI操作word文档,生成书签_paragraph.getctp()_阿宇kkk的博客-CSDN博客

近期做动态的word文档生成, 需要在指定XWPFRun生成书签的功能,有两种情况:

  1. 创建新word文档时候,直接在createRun前后调用生成书签的方法

                    XWPFRun oldRun =  runs.get(j);                CTBookmark ctBookmark = paragraph.getCTP().addNewBookmarkStart();//开始书签                ctBookmark.setId(BigInteger.valueOf(j));//开始书签和结束书签通过ID关联                ctBookmark.setName("书签"+ j);//书签名称                 XWPFRun replaceRun = paragraph.createRun();//新构建XWPFRun                //...                  paragraph.getCTP().addNewBookmarkEnd().setId(BigInteger.valueOf(j));//结束书签
  2. 在word模板基础上生成新文档时,在指定位置生成书签
@Test    public void testMark() throws Exception {        //新建一个文档        XWPFDocument targetDocument = new XWPFDocument();         String source = "C:\\Users\\86132\\Desktop\\test.docx";        XWPFDocument sourceDoc = new XWPFDocument(new FileInputStream(source));        List<XWPFParagraph> sourceDocParagraphs =  sourceDoc.getParagraphs();         for (int i = 0; i < sourceDocParagraphs.size(); i++) {            XWPFParagraph paragraph = targetDocument.createParagraph();             List<XWPFRun> runs = sourceDocParagraphs.get(i).getRuns();            for (int j = 0; j < runs.size(); j++) {                XWPFRun oldRun =  runs.get(j);                CTBookmark ctBookmark = paragraph.getCTP().addNewBookmarkStart();                ctBookmark.setId(BigInteger.valueOf(j));                ctBookmark.setName("书签"+ j);                 XWPFRun replaceRun = paragraph.createRun();//新构建XWPFRun                 replaceRun.setText(oldRun.text());                CTRPr ctrPr = oldRun.getCTR().getRPr();//Run样式                replaceRun.getCTR().setRPr(ctrPr);                 paragraph.getCTP().addNewBookmarkEnd().setId(BigInteger.valueOf(j));             }             targetDocument.setParagraph(paragraph, i);        }         String target = "C:\\Users\\86132\\Desktop\\target.docx";        OutputStream os = new FileOutputStream(target);        targetDocument.write(os);    }

注意:

  • 无法在指定下标位置添加标签,只能在createRun前后加入开始和结束书签
  • 获取run样式:XWPFRun.getCTR().getRPr()

原网址: 访问
创建于: 2023-05-08 16:31:30
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论