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

news/2024/11/26 7:29:35/

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

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

输出结果:
在这里插入图片描述


http://www.ppmy.cn/news/543472.html

相关文章

tl494cn逆变器电路图_用TL494制作的逆变电源

TL494集成块广泛应用在开关电源&#xff0c;其内部集成有PWM、三角波发生器、电池欠压检测&#xff0c;&#xff0b;5V电压基准等电路&#xff0c;具有外接元件少&#xff0c;控制稳定的特点。笔者在网上查阅大量资料&#xff0c;自制了一款准正弦波300W逆变器&#xff0c;采用…

POI-TL学习--文本样式设置

在poi-tl的文本设置结构&#xff0c;首先是有一个style的对象来存储文本格式的各种设置&#xff0c;其次是定义成TextRenderData类型的对象&#xff0c;在该对象下面有着多种的初始化结构&#xff0c;在该对象下可以自行书写多种的文本初始化结构。在demo中就有TextRenderData(…

高精度电压基准电路-TL431实现

先上图&#xff0c;图里面的431也可以是别的基准源&#xff08;比如LT1004之类的&#xff09;甚至可以是一个简单的稳压二极管。需要说明的时&#xff0c;此电路并非本人原创&#xff0c;也不知道作者是谁&#xff0c;偶然看到后&#xff0c;分析了一番觉得设计得很精妙。实际使…

tl494cn逆变器电路图_TL494逆变器应用电路图

TL494逆变器应用电路图 来源&#xff1a;华强电子网 作者&#xff1a;华仔 浏览&#xff1a;1326 时间&#xff1a;2016-08-10 14:18 标签&#xff1a; 摘要&#xff1a; TL494的各脚功能及参数如下&#xff1a; 第1、16脚为误差放大器A1、A2的同相输入端。最高输入电压不超过V…

poi-tl导出word实现图片环绕方式为浮于在文字上方办法

poi-tl导出word实现图片环绕方式为浮于在文字上方办法 poi-tl简介因为poi-tl暂时不支持设置图片环绕方式&#xff0c;但是可以自定义图片渲染插件 poi-tl简介 poi-tl&#xff08;poi template language&#xff09;是Word模板引擎&#xff0c;基于Microsoft Word模板和数据生成…

如何确定开关电源TL431反馈回路的参数

转载自《https://www.dianyuan.com/article/54404.html》 开关电源反馈回路主要由光耦&#xff08;如PC817&#xff09;、电压精密可调并联稳压器&#xff08;如TL431&#xff09;等器件组成。要研究如何设计反馈回路&#xff0c;首先先要了解这两个最主要元器件的基本参数。 一…

Redis 实战:逐步指南,让你轻松在 Linux 上安装与部署

目录 前言为什么会出现 Redis&#xff1f;磁盘、内存数据库缓存中间件 安装Redis5Redis6 使用总结 前言 Redis 中文网站&#xff1a;http://redis.cn/ Redis 是一个开源&#xff08;BSD 许可&#xff09;的&#xff0c;内存中的数据结构存储系统&#xff0c;它可以用作数据库…

XML系列篇之dtd约束

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于xml的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.XML 是什么 &#x1f4a1;辉辉小贴士&a…