1 Maven 依赖
html
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.0.0</version>
</dependency>
2 application.yml
html
spring:
main:
allow-bean-definition-overriding: true
3 测试代码
java
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 {
/**
* 测试替换内容和动态行
*/
@Test
public 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 分支。