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