1、引入依赖
<dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.10.0</version> </dependency>
2、创建模板
3、代码
package com.hhwy; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Test { public static void main(String[] args) throws IOException { Map<String, Object> data = new HashMap<>(); data.put("prjName","项目一"); data.put("code","001"); data.put("checkUser","zs,ls"); data.put("checkTime","2022-12-31"); data.put("name","名称一"); //(2)动态的表格列表数据,要创建List集合,数据类型为map类型,map中的key为word中要遍历的列,值为要替换的内容 List<Map<String,Object>> list=new ArrayList<>(); //创建map的List集合 for (int i = 0; i < 6; i++) { //用循环添加每行的数据,添加6行数据 Map<String,Object> detailMap = new HashMap<>(); //将word中标签名的例和对应数据保存到map detailMap.put("problem", "问题"+i); detailMap.put("request", "要求"+i); list.add(detailMap); } LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy(); //创建一个列表的规则 Configure config = Configure.builder().bind("list", policy).build(); //设置列表配置,如果有多个列表时需加.bind("list1", policy) 新列表配置即可 data.put("list", list); XWPFTemplate template = XWPFTemplate.compile("C:\\Users\\hhwy-jzq\\Desktop\\aaa\\模板.docx",config).render(data); FileOutputStream out; out = new FileOutputStream("C:\\Users\\hhwy-jzq\\Desktop\\aaa\\out.docx"); template.write(out); out.flush(); out.close(); template.close(); } }
效果图: