简介

Easypoi 是一个 Java 开发的简单易用的 Excel 和 Word 文件处理框架。它提供了简单的 API,可以轻松地读取、写入和操作 Excel 和 Word 文档,而无需编写繁琐的代码。

Easypoi 的主要特点包括:

  • 简单易用:Easypoi 提供了简洁的 API,使得 Excel 和 Word 的读写变得简单易懂。它采用了类似于 POI 的模型,但提供了更加简便的方法来处理 Excel 和 Word 文件。

  • 强大的功能:Easypoi 支持大多数 Excel 和 Word 的常用操作,例如读取、写入、合并单元格、设置样式、生成图表等。它还提供了丰富的模板和样式设置选项,可以轻松自定义导出的文档。

  • 高性能:Easypoi 高度优化了读写性能,采用了内存缓存和数据流处理等技术,能够处理大型 Excel 和 Word 文件而不会导致内存溢出或性能下降。

  • 广泛支持:Easypoi 支持 Excel 2003、Excel 2007+ 和 Word 2003 格式的文件,可以在各种 Java 开发环境中使用,包括常见的 Java Web 框架。

使用 Easypoi,你可以轻松地进行以下操作:

  • 读取 Excel 文件:使用 Easypoi 的 API,你可以加载 Excel 文件并提取其中的数据,包括单元格的内容、样式、合并单元格等。

  • 写入 Excel 文件:使用 Easypoi,你可以创建一个新的 Excel 文件并填充数据,设置单元格的样式,生成图表等。

  • 操作 Word 文件:Easypoi 提供了类似于 Excel 的 API 来操作 Word 文档。你可以读取、修改和生成 Word 文件,设置段落样式、表格样式等。

基于注解实现导入导出

导入注解

在 Easypoi 中,导入注解用于将 Excel 文件的数据映射到 Java 对象中。下面是一些常用的导入注解及其说明:

  • @Excel:用于标记一个字段,指定其对应的 Excel 列。可以设置列的索引或标题名称,例如 @Excel(name = "姓名")。除了基本数据类型外,还可以导入日期类型和枚举类型。

  • @ExcelIgnore:用于忽略某个字段,不进行导入。

下面是一个示例代码,展示如何使用导入注解:

public class User {
    @Excel(name = "姓名")
    private String name;
    
    @Excel(name = "年龄")
    private Integer age;
    
    // 省略其他字段的定义和Getter/Setter方法
}
​
// 导入 Excel 文件
List<User> userList = ExcelImportUtil.importExcel(file, User.class, params);

在上述示例中,@Excel(name = "姓名") 注解用于将 Excel 中 "姓名" 列的数据映射到 User 对象的 name 字段,@Excel(name = "年龄") 注解用于将 "年龄" 列的数据映射到 age 字段。然后,可以使用 ExcelImportUtil.importExcel 方法将 Excel 文件的数据导入到 User 对象的列表中。

导出注解

在 Easypoi 中,导出注解用于将 Java 对象的数据导出到 Excel 文件中。下面是一些常用的导出注解及其说明:

  • @Excel:用于标记一个字段,指定其对应的 Excel 列。可以设置列的索引或标题名称,例如 @Excel(name = "姓名")。除了基本数据类型外,还可以导出日期类型和枚举类型。

  • @ExcelCollection:用于指定复杂对象的字段导出。可以设置导出的列的索引或标题名称,例如 @ExcelCollection(name = "订单明细")

  • @ExcelEntity:用于指定复杂对象的导出,可以嵌套其他对象的导出。

下面是一个示例代码,展示如何使用导出注解:

public class User {
    @Excel(name = "姓名")
    private String name;
    
    @Excel(name = "年龄")
    private Integer age;
    
    // 省略其他字段的定义和Getter/Setter方法
}
​
// 导出 Excel 文件
List<User> userList = // 获取用户数据
ExcelExportUtil.exportExcel(userList, User.class, "用户列表", "Sheet1", ExcelType.XSSF);

在上述示例中,@Excel(name = "姓名") 注解用于将 User 对象的 name 字段导出到 Excel 的 "姓名" 列,@Excel(name = "年龄") 注解用于将 age 字段导出到 "年龄" 列。然后,可以使用 ExcelExportUtil.exportExcel 方法将 User 对象的列表导出到 Excel 文件中。

以上是基于注解,最基础实现导入导出的实战案例,可访问官网文档解锁高级用法。

非实体导入导出

非实体导入

在导入 Excel 文件时,可以使用 Easypoi 提供的工具类和方法来处理表头和表体数据。下面是一个示例代码,展示如何区分表头和表体的导入:

// 导入 Excel 文件
ExcelImportResult<Map<String, Object>> result = ExcelImportUtil.importExcelMore(file, Map.class, params);
List<Map<String, Object>> headerList = result.getList(); // 获取表头数据
List<Map<String, Object>> bodyList = result.getList(); // 获取表体数据

在上述示例中,ExcelImportUtil.importExcelMore 方法用于将 Excel 文件的数据导入到 ExcelImportResult 对象中。通过调用 result.getList() 方法,可以获取表头数据和表体数据的列表。每个 Map 对象表示一行数据,键为 Excel 列的标题,值为对应列的数据。

非实体导出

在导出 Excel 文件时,同样可以使用 Easypoi 提供的工具类和方法来创建并填充表头和表体的数据。下面是一个示例代码,展示如何区分表头和表体的导出:

// 创建表头数据列表
List<Map<String, Object>> headerList = // 获取表头数据列表
​
// 创建表体数据列表
List<Map<String, Object>> bodyList = // 获取表体数据列表
​
// 导出 Excel 文件
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), headerList, bodyList);

在上述示例中,你需要分别创建表头数据列表 headerList 和表体数据列表 bodyList。每个列表中的 Map 对象表示一行数据,键为 Excel 列的标题,值为对应列的数据。然后,使用 ExcelExportUtil.exportExcel 方法将表头数据和表体数据导出为一个 Workbook 对象,该对象可以保存为 Excel 文件。

以上是基于非实体,最基础实现导入导出的实战案例,可访问官网文档解锁高级用法。

基于模板实现导出

Easypoi 提供了基于模板的方式来实现导出 Excel 文件的操作。通过使用模板,你可以在 Excel 文件中预定义样式、合并单元格、动态数据和其他指令等内容,然后使用 Easypoi 将数据填充到模板中,实现灵活和个性化的导出功能。

导出步骤

使用 Easypoi 基于模板实现导出的步骤如下:

  1. 创建 Excel 模板文件:可以使用 Excel 编辑工具创建模板文件,设置样式、合并单元格和其他需要的内容。

  2. 导入 Excel 模板文件:使用 Easypoi 提供的方法导入 Excel 模板文件,得到一个 Workbook 对象。

  3. 填充模板数据:将数据对象与模板中的动态数据进行绑定,将数据填充到模板中。

  4. 复制模板到目标工作簿:将填充好数据的模板复制到导出的工作簿中。

  5. 导出 Excel 文件:将导出的工作簿导出为 Excel 文件。

常见模板指令介绍

空格分割
三目运算 {{test ? obj:obj2}}
n: 表示 这个cell是数值类型 {{n:}}
le: 代表长度{{le:()}} 在if/else 运用{{le:() > 8 ? obj1 : obj2}}
fd: 格式化时间 {{fd:(obj;yyyy-MM-dd)}}
fn: 格式化数字 {{fn:(obj;###.00)}}
fe: 遍历数据,创建row
!fe: 遍历数据不创建row
$fe: 下移插入,把当前行,下面的行全部下移.size()行,然后插入
#fe: 横向遍历
v_fe: 横向遍历值
!if: 删除当前列 {{!if:(test)}}
sum: 统计数据
cal: 基础的+-X% 计算
dict: 字典

优势

Easypoi 基于模板实现导出具有以下优势:

  1. 灵活的导出功能:使用模板可以自定义样式、合并单元格、动态数据和其他指令,实现灵活的导出功能,满足不同需求的导出操作。

  2. 可视化编辑:使用 Excel 编辑工具创建模板文件,可以通过图形化界面进行编辑和设计,方便快捷。

  3. 简化开发流程:Easypoi 提供了简单易用的 API,封装了导出的底层操作,简化了开发流程,降低了开发成本。

  4. 支持复杂数据结构:通过使用模板的循环指令和动态数据绑定,可以方便地处理复杂的数据结构,如多层嵌套的数据、横向和纵向动态数据等。

  5. 高性能导出:Easypoi 底层采用了缓存机制和流式导出的方式,提高了导出的性能和效率。