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报告,大幅提升办公自动化效率。