近期做动态的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模板基础上生成新文档时,在指定位置生成书签
@Testpublic 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();//新构建XWPFRunreplaceRun.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()

POI操作word文档,生成书签相关推荐

  1. poi操作word文档总结

    POI分段落生成纯Word动态模板并导入数据 导出数据,可以用word另存为xml格式的ftl文件,变量用${变量名}表示,然后在类中通过 freemarker去替换变量. 但是怎么导入word数据. ...

  2. 使用poi操作word文档实现套打功能

    使用poi操作word文档实现套打功能 本文目的是为了分享一个实现套打功能,但是不同于简单的word的文本替换而是采用poi对word的文本框就行操作实现的功能: poi中各种jar的说明 套打的实现 ...

  3. POI操作Word文档工具

    POI操作Word文档工具 1.POI简单介绍 2.POI操作Word文档基本方法 3.POI操作Word文档基本方法应用 4.POI操作Word文档工具类 1.POI简单介绍 POIFS(可疑混淆执 ...

  4. Poi 操作Word文档设置页边距 解决CTPageMar类找不到

    Poi操作Word文档设置页边距 CTPageMar类找不到 已解决 在百度上搜了一顿,找到了相关的解决方案,但是缺失了一个类,在百度怎么也找不到! 给大家一个参考数据 1厘米≈567 CTSectP ...

  5. POI操作word文档-添加上标下标

    背景: 接了新需求,前端提供一个大概的word模板,包含通用信息,用户在前端填写可修改内容至模板完善,然后将整个数据传递给后端进行保存,后端提供导出word的功能. 数据中包含这种类型,由于前端输出框 ...

  6. poi处理word内容的公式_利用poi操作word文档

    关键字:POI JAVA 批注 总页数 总字符数 一:认识POI Apache POI是一个开源的利用Java读写Excel.WORD等微软OLE2组件文档的项目.最新的3.5版本有很多改进,加入了对 ...

  7. 利用poi操作word文档(针对docx格式)

    一:认识POI  Apache POI是一个开源的利用Java读写Excel.WORD等微软OLE2组件文档的项目.最新的3.5版本有很多改进,加入了对采用OOXML格式的Office 2007支持, ...

  8. poi操作word文档(替换,插入图片)

    前段时间项目上要用到一个替换word中的字符以及插入图片并导出的功能,google了一番发现别人的代码跑起来多多少少有些问题,所以就自己照着poi的api写了一个工具类,在此记录下来,如果有需要的朋友 ...

  9. docx4j操作word文档之生成页码、合并多个文档

    docx4j操作word文档: 动态生成表格行数并填充数据 单元格内填充图片 合并多个word文档(包含页码,纸张方向等等) 1.动态生成表格行数并填充数据 首先创建模板文件.docx,如图: 代码如 ...

最新文章

  1. Writing a FilterUnloadCallback Routine for a Minifilter Driver 为一个微过滤驱动写一个过滤器卸载回调例程...
  2. 第十五章 五虎上将中谁最冷血
  3. poj 2985(并查集+线段树求K大数)
  4. python的return语句求两数之和_Python的return语句可以返回多个不同类型的值
  5. 高级工计算机操作试题及答案,计算机系统操作高级工试题和答案[1]
  6. Mac那些你不知道的 :自带计算器的隐藏功能
  7. 论文笔记《Attention Is All You Need》
  8. IPTV系统视频直播点播软硬件一体化方案OEM盒子
  9. 联发科/华为/三星等处理器规格表
  10. initialization on demand holder
  11. U盘被写保护?我来教你高级格式化
  12. CTGU·OJ .特别的幸运数
  13. 一项研究调查了采用Masimo Rad-G™搭配RRp(R)实现自动呼吸频率测量的影响
  14. 【论文排版】参考文献的格式设置
  15. 微信小程序中定位报错在app.json中声明permission字段
  16. 百度地图实现地图全屏(放大页面全屏)
  17. 又一个!左手手机,右手汽车,为啥手机厂商都扎堆造汽车?
  18. android应用开发-从设计到实现 4-10 解析天气预报数据
  19. 成人脑力训练 3.951
  20. 阿里大变局,马云女弟子掌舵淘宝

热门文章

  1. 迭代求解最优化问题——信赖域方法
  2. Linux 下的屏幕取词技术
  3. tcp_tw_recycle引起的TCP握手失败
  4. 运行DNW出现访问内存违例的问题解决
  5. 华为软件平台为啥不咋地?《[公司文件] 聚焦战略平台,加强血液流动,夺取未来胜利——任总、郭平、徐直军在电信软件业务汇报会上的讲话 》[转]
  6. 浙江奥米流体携卫生级泵、阀门及活接,管道配件等产品相约发酵展
  7. 腾讯开发WIFI手机QQ 紧抓高端无线互联网用户
  8. python文件粉碎传输_linux 彻底删除、粉碎文件命令shred
  9. Unity赛车教程第三部分
  10. CPU漏洞补丁修复导致KeServiceDescriptorTable获取变更