通过这个简单的例子,再去和自己的业务结合

官网http://deepoove.com/poi-tl/

官网有其它完整的例子:http://deepoove.com/poi-tl/#hack-loop-table

1.导包

( 注意:poi-tl低版本没有LoopRowTableRenderPolicy ,下面是目前最新版)

<dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.0</version>
</dependency><!-- JSON类需要这个依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.73</version></dependency>

2.需要动态添加的模板

3.使用

3.1 需要循环添加内容的实体类

package org.app.test;public class TestLoopRowTable {private String xh;private String nr;public TestLoopRowTable(String xh, String nr) {this.xh = xh;this.nr = nr;}public TestLoopRowTable() {}@Overridepublic String toString() {return "TestLoopRowTable{" +"xh='" + xh + '\'' +", nr='" + nr + '\'' +'}';}public String getXh() {return xh;}public void setXh(String xh) {this.xh = xh;}public String getNr() {return nr;}public void setNr(String nr) {this.nr = nr;}
}

3.2 获取数据和模板进行填充

import com.alibaba.fastjson.JSON;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;public class TestTable {@org.junit.jupiter.api.Testpublic  void testTable() throws IOException {//        compile 编译模板
//        render 渲染数据
//        write 输出到流
//        TDO模式:Template + data-model = output// 模板文件地址String filePath= "D:\\codes\\08\\miaosha\\src\\main\\resources\\static\\tableTest.docx";// 读取模板后保存生成word的地址String outPath = "D:\\codes\\08\\miaosha\\src\\main\\resources\\static\\tableTestOut.docx";// 为表格的显示绑定行循环LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();// 将bz设置为行循环绑定的数据源的key,即key是bz的value会在模板中的{{bz}}处进行解析Configure configure = Configure.builder().bind("bz", policy).build();// 将需要解析的数据放到map中HashMap<String, Object> map = new HashMap<String, Object>() {{// 其他业务获取到数据源String testTable = "[{\"xh\":\"1\",\"nr\":\"内容1\"},{\"xh\":\"2\",\"nr\":\"内容2\"},{\"xh\":\"3\",\"nr\":\"内容3\"}]";// 内容在表格里循环// JSON使用,需要导入fastjson依赖List<TestLoopRowTable> forms = JSON.parseArray(testTable, TestLoopRowTable.class);for (int i = 0; i < forms.size(); i++) {put("xh" + i, forms.get(i).getXh());put("nr" + i, forms.get(i).getNr());}put("bz", forms);}};// 读取模板、数据并渲染XWPFTemplate template = XWPFTemplate.compile(filePath, configure).render(map);
//         文件是否已存在,则删除File file = new File(outPath);if (file.exists()){file.delete();}
//         生成word保存在指定目录template.writeToFile(outPath);template.close();}
}

输出结果:

java操作word循环动态添加表格Table使用poi-tl的LoopRowTableRenderPolicy相关推荐

  1. java 操作word中表格_Java 使用Spire.Cloud.Word给Word文档添加表格

    在编辑Word文档时,很多时候需要用到表格,以便能够清晰整洁地表达和归类数据.本文就将介绍如何使用Spire.Cloud.Word给Word文档添加表格.Spire.Cloud.Word提供了Tabl ...

  2. java 操作 word 表格和样式,java读取word表格中的表格 java如何读取word中的excel表格数据...

    Java 利用poi 可以直接读取word中的表格保持样式生1.读取word 2003及word 2007需要的jar包 读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi ...

  3. java操作word,添加页眉,页眉图片,替换书签,添加水印(全)

    java操作word文档,添加页眉文本,页眉图片,替换书签,水印 原模板截图: 生成后的文档效果截图: 第一步:引入maven <dependency><groupId>spi ...

  4. SpringBoot+Poi-tl根据Word模板动态生成word(含动态行表格、合并单元格)

    本编文章继SpringBoot+Poi-tl根据Word模板动态生成word(含动态行表格)文章之后 介绍Poi-tl导出word的延伸功能: 所需依赖以及word模板所属位置 见 SpringBoo ...

  5. jQuery+Ajax动态添加表格

    最近做课设,涉及到前端知识,设计的项目需要用jQuery动态添加删除html中table的tr和td,试遍了网上的代码都无济于事,无奈只能自己编写.先展示运行结果: 详细代码如下: dao层代码: / ...

  6. layui 动态添加 表格数据

    静态表格: <table class="layui-table" id="table" lay-filter="table">& ...

  7. php表格tr,jQuery+ajax实现动态添加表格tr td功能示例

    本文实例讲述了jQuery+ajax实现动态添加表格tr td功能.分享给大家供大家参考,具体如下: 功能:ajax获取后台返回数据给table动态添加tr/td html部分: ajax部分: va ...

  8. java操作word

    前言 使用java操作word使用的是java开源项目docx4j,在学习docx的使用过程中,参考了大牛的链接,下面放上我参考过的网址: http://blog.csdn.net/zhyh1986/ ...

  9. java操作dom节点的添加_java操作DOM节点的添加,删除,修改

    java操作DOM节点的添加,删除,修改 下面我们开始对此xml添加,删除,修改:方法一 import java.io.File; import java.io.IOException; import ...

最新文章

  1. java htmlparser 使用教程_Java解析HTML之HTMLParser使用与详解
  2. 容器必须设置宽度吗_消防泵必须设置自动巡检柜吗
  3. 沁恒RISC-V MCU 为全国大学生智能汽车竞赛加速
  4. 【python3】 抓取异常信息try/except
  5. java WEB 基础复习_开篇--Java Web基础知识
  6. maven scope/site/effective-pom/assembly
  7. Linux 面试最高频的 5 个基本问题!
  8. 华南师范大学计算机学院广东录取,华南师范大学2020年广东省各批次分专业录取分数统计(含位次)...
  9. oracle数据库dblink创建语句_「运维实验」——达梦数据库DBlink连接Oracle配置
  10. java classnotfoundexception e_关于解释class文件时出现java.lang.ClassNotFoundException的问题...
  11. 创建第一个RMI应用
  12. 10个不太为人所知的,但实用的PHP函数(转)
  13. 机器学习基础算法24-SVM理论部分
  14. win7下处理桌面文件丢失及黑屏的有效方法
  15. Java生鲜电商平台-会员积分系统的设计与架构
  16. java使用环信信息推送,环信推送详解
  17. sed编辑器之修改行
  18. 深入理解激活函数之softmax
  19. 计算机统计模式的符号,科学计算器的统计的符号有哪些?
  20. 2W字长文吐血整理 Docker云原生

热门文章

  1. 邮票面值设计java,[洛谷P1021][题解]邮票面值设计
  2. Python分析香港26281套在售二手房数据
  3. rtx自建服务器,腾讯通RTX服务器端如何安装和配置
  4. php富友表单提交接口对接
  5. 桥梁远景图微型计算机教案,小学六年级语文《桥梁远景图》教案模板
  6. Linux下fstab参数配置详解
  7. 《学术研究你的成功之道》读书笔记之论文篇
  8. 瑞典乐队ABBA回归
  9. [原创]半醉人间-酒后的世界
  10. 【SQLite预习课2】SQLite 和 HeidiSQL 的安装