Word導出

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中的keyword中要遍歷的列,值爲要替換的內容
        List<Map<String,Object>> list=new ArrayList<>();
        //創建mapList集合
        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();
    }
}

效果圖:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章