EasyExcel:阿里低内存 Excel 读写工具引入与使用指南
一、项目官方信息
| 项目 | 信息 |
|---|---|
| GitHub 仓库 | alibaba/easyexcel |
| 官方网站 | easyexcel.opensource.alibaba.com |
| 开源协议 | Apache-2.0 |
| 主要语言 | Java |
| Star 数 | 约 34k |
EasyExcel 是阿里开源的 Java 解析、生成 Excel 工具。它重写了 POI 对 07 版 Excel 的解析,把原本 3M Excel 需 100M 内存降到几 M,再大的 Excel 也不会内存溢出。16M 内存 23 秒可读取 75M(46 万行 25 列)的 Excel。
注意:官方已公告 EasyExcel 逐步进入维护模式,会修复 Bug 但不再新增功能。

二、官方图片
上图为 EasyExcel 仓库在 GitHub 上的社交预览图。
三、环境要求
- JDK 8+;
- Maven/Gradle;
- 不依赖额外内存,适合大文件。
四、引入步骤
1. Maven 依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.x</version>
</dependency>
2. 定义数据模型
@Data
public class User {
private String name;
private Integer age;
}
3. 读取 Excel
EasyExcel.read(fileName, User.class, new ReadListener<User>() {
@Override
public void invoke(User data, AnalysisContext context) {
// 逐行处理
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {}
}).sheet().doRead();
4. 写入 Excel
List<User> list = ...;
EasyExcel.write(fileName, User.class).sheet("用户").doWrite(list);
五、使用方法
- 低内存读取:基于 SAX 流式读取,避免 OOM;
- 注解映射:
@ExcelProperty指定列; - 大数据写出:分批写入;
- 模板填充:支持模板与变量填充;
- Web 下载:配合 HttpServletResponse 导出。
六、常见问题 FAQ
-
EasyExcel 解决什么痛点? POI 读大 Excel 内存占用高,EasyExcel 流式解析把内存降到几 M。
-
46 万行需要多少内存? 16M 内存约 23 秒读完。
-
项目还在维护吗? 官方公告进入维护模式,修 Bug 不新增功能。
-
怎么读取? 用
EasyExcel.read配合 ReadListener 逐行处理。 -
怎么写 Excel?
EasyExcel.write传入列表即可。 -
如何指定列? 用
@ExcelProperty注解。
七、跳转链接
- GitHub 仓库:alibaba/easyexcel
- 官网:easyexcel.opensource.alibaba.com
- Gitee:gitee.com/easyexcel