Loading...

文章背景图

EasyExcel:阿里低内存 Excel 读写工具引入与使用指南

2024-10-29
0
- 字
- 分钟

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 仓库封面

二、官方图片

上图为 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

  1. EasyExcel 解决什么痛点? POI 读大 Excel 内存占用高,EasyExcel 流式解析把内存降到几 M。

  2. 46 万行需要多少内存? 16M 内存约 23 秒读完。

  3. 项目还在维护吗? 官方公告进入维护模式,修 Bug 不新增功能。

  4. 怎么读取? 用 EasyExcel.read 配合 ReadListener 逐行处理。

  5. 怎么写 Excel? EasyExcel.write 传入列表即可。

  6. 如何指定列? 用 @ExcelProperty 注解。

七、跳转链接

评论交流

文章目录