1 Maven 依賴
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.0.0</version>
</dependency>
2?application.yml?
spring:main:allow-bean-definition-overriding: true
3?測試代碼
package com.xudongbase.poi.easypoi;import cn.afterturn.easypoi.word.WordExportUtil;
import cn.afterturn.easypoi.word.entity.MyXWPFDocument;
import cn.hutool.core.io.resource.ClassPathResource;
import com.xudongbase.common.util.FileUtil;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;@SpringBootTest
public class WordTemplateTest {/*** 測試替換內容和動態行*/@Testpublic void test() {try {//讀文件ClassPathResource classPathResource = new ClassPathResource("/doc/word/EasyPoiWordTemplate.docx");File file = new File("D:/word/EasyPoiWordTemplateAfter.docx");XWPFDocument document = new MyXWPFDocument(classPathResource.getStream());Map<String, Object> contentMap = new HashMap<>();contentMap.put("xudongmaster1", "旭東怪1");contentMap.put("xudongmaster2", "旭東怪2");FileUtil.createNewFile(file);List<Map<String, Object>> tableDataList = new ArrayList<>();for (int i = 0; i < 10; i++) {Map<String, Object> rowMap = new HashMap<>();rowMap.put("test", "測試" + i);rowMap.put("name", "名稱" + i);tableDataList.add(rowMap);}contentMap.put("tableDataList", tableDataList);WordExportUtil.exportWord07(document, contentMap);//復制前兩行document.write(new FileOutputStream(file));} catch (Exception e) {e.printStackTrace();}}
}
4 模板
5 測試結果
?
?
注:
????????完整代碼示例請前往 Gitee 查看 xudongbase 項目的 easypoi 分支。
xudongbase: 主要是項目中可以用到的共通方法,現有easyexcel分支在持續更新中。歡迎大家Star和提交Issues。easyexcel分支:批量設置樣式,批量添加批注,批量合并單元格,設置凍結行和列,設置行高列寬,隱藏行和列,綁定下拉框數據,設置水印,插入圖片 - Gitee.com