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(); } }
效果圖: