EasyPoi操作Word文档:从入门到实践
一、EasyPoi简介
EasyPoi基于Apache POI开发,简化了Excel和Word文档的生成与解析。其Word模块支持模板式填充,只需在Word模板中插入特定标签,即可用Java对象快速生成报表。
二、环境准备
在Maven项目中添加依赖:
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>此外,需要准备一个Word模板文件(如template.docx),在其中使用{{变量名}}或{{foreach}}等标签。
三、基本使用
3.1 简单文本替换
创建数据Map:
Map<String, Object> params = new HashMap<>();
params.put("name", "张三");
params.put("date", "2025-03-28");调用API生成文档:
// 读取模板
TemplateExportParams templateParams = new TemplateExportParams("template.docx");
// 执行导出
FileOutputStream fos = new FileOutputStream("output.docx");
WordExportUtil.exportWord07(templateParams, params, fos);3.2 循环表格行
在Word模板表格中使用{{foreach:list}}和{{/foreach}}包裹行,内部用{{item.field}}引用:
List<User> userList = ...;
Map<String, Object> data = new HashMap<>();
data.put("list", userList);3.3 插入图片
使用{{img:imageKey}}标签,并设置图片数据:
Map<String, Object> imageMap = new HashMap<>();
imageMap.put("imageKey", new ByteArrayInputStream(imgBytes));
data.put("imageMap", imageMap);四、高级特性
支持合并单元格({{merge:field}})、条件判断({{if:condition}})等。可通过自定义模板解析器扩展功能。
五、注意事项
- 模板中变量名需与Map键一致;
- 循环标签内部不可包含多余段落;
- 图片标签需配合
imageMap使用; - 建议使用最新版本以避免Bug。
通过EasyPoi,开发者可以快速生成精美的Word报告,大幅提升办公自动化效率。