简单的模板处理可以参考以下链接:

https://blog.csdn.net/liushimiao0104/article/details/78520120

我用的是一下版本

    <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.4.2</version></dependency>

关于poi-tl

poi-tl:poi template language 一个基于poi的word模板生成文档的开源组件。

文档介绍:http://deepoove.com/poi-tl/

GitHub地址:https://github.com/Sayi/poi-tl

1、关于动态表格的处理,文档已经写的比较详情了,我只做简单的实际运用的介绍

detail_table:问表格定义的参数名,可以写在模板表格的任意位置。

DetailTablePolicy:自己建的class,用于处理这个表格,

这行代码相当于这个获取了这个表格交给这个类处理。

关于此处的文件路径,只做参考,项目框架不一样,以及系统不一样可能获取文件的路径有点差异。如果文件找不到需要自己去处理。

Configure config = Configure.newBuilder().customPolicy("detail_table", new DetailTablePolicy()).build();
XWPFTemplate template = XWPFTemplate.compile("src/test/resources/付款通知书.docx", config).render(datas);

如果world有多个数据需要自定义表格的话,换成以下写法

     Configure configs=Configure.createDefault();configs.customPolicy("Table1",  new DetailTablePolicy());configs.customPolicy("Table2",  new DetailTablePolicy());     XWPFTemplate template = XWPFTemplate.compile(worldTemplate,configs);template.render(dataMap);

datas,数据,一般是map

ldatas.put("detail_table",null);

      Style headTextStyle = new Style();TableStyle headStyle = new TableStyle();TableStyle rowStyle = new TableStyle();headTextStyle.setFontFamily("Hei");headTextStyle.setFontSize(9);headTextStyle.setColor("000000");List headArr=new ArrayList();for (int i = 0; i < 3; i++) {           RowRenderData header = RowRenderData.build(new TextRenderData("姓名",headTextStyle), new TextRenderData("电话",headTextStyle));headArr.add(header);}datas.put("detail_table", headArr);

2、编写DetailTablePolicy类

table就是这个获取的表格,可以操作此表格的位置信息,

data就是detail_table的数据,数据自己定义,因为我自己的数据需要控制字体大小,所有用的List<RowRenderData> 的格式。

import com.deepoove.poi.NiceXWPFDocument;
import com.deepoove.poi.data.RowRenderData;
import com.deepoove.poi.policy.DynamicTableRenderPolicy;
import com.deepoove.poi.policy.MiniTableRenderPolicy;
import java.util.List;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;/*** Created by on 2019/5/28.*/
public class DetailTablePolicy extends DynamicTableRenderPolicy {// 货品填充数据所在行数//int goodsStartRow = 2;// 人工费填充数据所在行数int laborsStartRow = 1;@Overridepublic void render(XWPFTable table, Object data) {if (null == data) return;// DetailData detailData = (DetailData) data;List<RowRenderData> labors =(List<RowRenderData>)data;if (null != labors) {table.removeRow(laborsStartRow);// 循环插入行for (int i = 0; i < labors.size(); i++) {XWPFTableRow insertNewTableRow = table.insertNewTableRow(laborsStartRow);//处理一行有几列        for (int j = 0; j < 2; j++)  insertNewTableRow.createCell();// 合并单元格// NiceXWPFDocument.mergeCellsHorizonal(table, laborsStartRow, 0, 3);MiniTableRenderPolicy.renderRow(table, laborsStartRow, labors.get(i));}}}}

表格样式控制可参考

https://github.com/Sayi/poi-tl/blob/master/src/test/java/com/deepoove/poi/tl/example/PaymentExample.java

提示:如果是world转PDF,下载的功能,用springboot框架打包,发布到windows上,需要在c盘的windows->system32,文件下放入jacob-1.19-x64.dll文件,项目也需要使用jacob-1.19.jar包。

java poi-tl处理world动态表格相关推荐

  1. java POI对word中的表格动态插入固定数据,以及插入不确定数量的的数据

    java POI对word中的表格动态插入固定数据,以及插入不具体的数据 遇到个项目本来是用Execl导出的,相对简单,客户要求用Word导出,并按照他们给的模板进行导出: 从网上百度了一下,然后自己 ...

  2. java读取word文档的复杂表格_poi读取word表格 java POI 如何读取word的表格中的表格...

    poi 操作word 2007 (如何删除word中的某一个表格)小编忘了哪年哪月的哪日小编在哪面墙上刻下张脸张微笑着忧伤着凝望小编的脸. public static void changeTable ...

  3. java POI导出多张图片到表格(占位符方式)

    最近做的项目,需要将一些信息导出到word中.在网上找了好多解决方案,现在将这几天的总结分享一下. 目前来看,java导出word大致有6种解决方案: 1:Jacob是Java-COM Bridge的 ...

  4. java poi 读word (doc,docx)表格

    项目场景: 最近公司将线下流程线上话,提供上传模板的功能,很多表格都是在word里面生成的,找了很多资料处理docx 跟doc 最后docx 勉强可以用,doc还是不完善,最后只能沟通 限制上传doc ...

  5. Java POI 实现填充Wrod模板表格内容

    代码 package com.nj.uu.base.component.poi;import lombok.extern.slf4j.Slf4j; import org.apache.poi.xwpf ...

  6. java poi doc转docx_POI动态插入数据到Word文档

    模板制作 制作word模版,${xxxx}是要替换的内容.注意${xxxx}是一个整体,中间不能断开,因为利用POI的API程序操作时,判断是否有这个${xxxx}才进行替换. 依赖的包 org.ap ...

  7. Java freemarker 模板生成word动态表格

    1.新建一个word文档 2.把调整完的word另存为xml格式: 3.使用文本编辑器打开 4.xml格式化 XML 在线格式化 | 菜鸟工具菜鸟工具-XML 在线格式化..https://c.run ...

  8. java使用poi在word中生成柱状图、折线图、饼图、柱状图+折线图组合图、动态表格、文本替换、图片替换 springboot项目

    本文参考地址:https://blog.csdn.net/u014427811/article/details/100771314 在参考文章的基础上,增加了模板样例 模板样例地址 百度网盘 链接:h ...

  9. java使用poi在word中生成柱状图、折线图、饼图、柱状图+折线图组合图、动态表格、文本替换、图片替换、更新内置Excel数据、更新插入的文本框内容、合并表格单元格;

    本文参考地址:https://blog.csdn.net/wangxiaoyingWXY/article/details/95377533 在参考文章的基础上,增加了扩展.感谢被参考的妹子.另外该博客 ...

  10. [实用][更新中]Java Apache POI 打印Word文档工具(含文本替换,动态表格功能)

    [实用][更新中]Java Apache POI 打印Word文档工具(含文本替换,动态表格功能) 基于Apache POI对Word进行操作 一.基于Apache POI封装的word文档工具V1. ...

最新文章

  1. (二)k-means算法原理以及python实现
  2. UnicodeMath数学公式编码_翻译(Unicode Nearly Plain - Text Encoding of Mathematics Version 3)
  3. 切割照片php上传,php下ajax的文件切割上传
  4. 完整的Flex多文件上传实例
  5. C语言 · 阶乘计算 · 基础练习
  6. FZU 2041 二分枚举
  7. 计算机创新设计2大赛获奖作品3Done,走向3D创意世界——3Done创客设计比赛
  8. 计算机会不会取代人类英语作文,人类不能被机器人取代英语作文
  9. 数据库添加字段的sql语句
  10. c语言英文背单词软件下载,英语背单词软件
  11. ie不能加载flash html,IE浏览器无法显示Flash怎么解决?解决的方法介绍
  12. 计算机桌面文字重影,为什么电脑屏幕上的字老是重影,该怎么调?
  13. react在线浏览doc_如何实现 React 中的状态自动保存?
  14. Mystical compositions of the self: women, modernism, and empire【翻译】
  15. 干货!史上最全数据分析学习路线(附资源链接)
  16. Vue - 判断访问网页客户端设备是手机移动端还是 PC 电脑端(判断设备类型是否是移动端手机)
  17. MapServer 7.0.3 Documentation 翻译
  18. 【黄啊码】php结合redis实现商城在线秒杀抢购
  19. zcmu--1042: 二哥的困惑 Ⅴ
  20. 快速排序(详细讲解)

热门文章

  1. 计算机辅助药物设计:分子对接
  2. Linux下stream内存带宽测试参数和示例详解附源码(总结)
  3. vue 点击获取当前时间上/下周 整周数据
  4. 升级shiro_北海道Shiro身体乳真假辨别
  5. 自定义Seebar进度条、进度条背景颜色,更换进度滑动icon。
  6. c语言和java哪个有前途_C/C++和JAVA哪个更有前途呢?
  7. error while loading shared libraries: libnvinfer.so.8 |【TensorRT 依赖解决】
  8. Axure RP使用攻略--入门级(二)线框图元件
  9. 华为路由器限速:MQC限速和QOS
  10. css波纹动画在移动端,利用css实现波纹动画效果实例