专栏名称: Java知音
专注于Java,推送技术文章,热门开源项目等。致力打造一个有实用,有情怀的Java技术公众号!
目录
相关文章推荐
一周进步  ·  小红书训练营即将涨价 ·  昨天  
一周进步  ·  小红书训练营即将涨价 ·  昨天  
axb的自我修养  ·  我们选择只替换dify执行器是两方面的考虑, ... ·  4 天前  
飞鲸投研  ·  利润大增300%,AI芯片龙头,一马当先! ·  4 天前  
51好读  ›  专栏  ›  Java知音

EasyExcel,被救了!

Java知音  · 公众号  · Java 科技自媒体  · 2024-12-24 10:05

主要观点总结

本文主要介绍了阿里巴巴旗下的Java Excel工具库EasyExcel宣布将停止更新并逐步进入维护模式的信息。同时,介绍了EasyExcel的继任者FastExcel的开源、性能优化、简单易用等特点及其与EasyExcel的区别。文章还提供了FastExcel的使用示例。

关键观点总结

关键观点1: EasyExcel将停止更新并步入维护模式

官方表示将仍然继续修复Bug,但不再主动新增功能。

关键观点2: FastExcel作为EasyExcel的继任者被推出

FastExcel旨在提供更高的性能和稳定性,并兼容所有EasyExcel的功能。

关键观点3: FastExcel的主要特性

包括高性能读写、简单易用、流式操作等。

关键观点4: 如何升级至FastExcel

用户需要将EasyExcel的依赖和包名替换为FastExcel的相应内容。

关键观点5: FastExcel的使用示例

文章提供了读取Excel文件和创建Excel文件的简单示例。


正文

11月6日消息,阿里巴巴旗下的Java Excel工具库EasyExcel近日宣布,将停止更新,未来将逐步进入维护模式,将继续修复Bug,但不再主动新增功能。

EasyExcel以其快速、简洁和解决大文件内存溢出的能力而著称,官方测试显示,仅需16M内存即可读取75M(46万行25列)的Excel文件,且耗时仅23秒。

目前项目在GitHub上拥有超过30k的stars和7.5k的forks,维护6年关闭了超过3000个issue。

但有个好消息:EasyExcel的作者创建了新项目:FastExcel。

开源地址:https://github.com/CodePhiliaX/fastexcel

作者选择为它起名为 FastExcel,以突出这个框架在处理 Excel 文件时的高性能表现,而不仅仅是简单易用。

FastExcel 将始终坚持免费开源,并采用最开放的 MIT 协议,使其适用于任何商业化场景。这为开发者和企业提供了极大的自由度和灵活性。FastExcel 的一些显著特点包括:

  • 完全兼容原 EasyExcel 的所有功能和特性,这使得用户可以无缝过渡。
  • 从 EasyExcel 迁移到 FastExcel 只需简单地更换包名和 Maven 依赖即可完成升级。
  • 在功能上,比 EasyExcel 提供更多创新和改进。
  • FastExcel 1.0.0 版本新增了读取 Excel 指定行数和将 Excel 转换为 PDF 的功能。

他们计划在未来推出更多新特性,以不断提升用户体验和工具实用性。

FastExcel 致力于成为您处理 Excel 文件的最佳选择。

主要特性:

  • 高性能读写: FastExcel 专注于性能优化,能够高效处理大规模的 Excel 数据。相比一些传统的 Excel 处理库,它能显著降低内存占用。
  • 简单易用: 该库提供了简洁直观的 API,使得开发者可以轻松集成到项目中,无论是简单的 Excel 操作还是复杂的数据处理都能快速上手。
  • 流式操作: FastExcel 支持流式读取,将一次性加载大量数据的问题降到最低。这种设计方式在处理数十万甚至上百万行的数据时尤为重要。

建议您使用最新版本的 FastExcel,因为最新版本中的性能优化、BUG修复和新功能都会让您的使用更加方便。

当前 FastExcel 底层使用 poi 作为基础包,如果您的项目中已经有 poi 相关组件,需要您手动排除 poi 的相关 jar 包。

如果您使用 Maven 进行项目构建,请在 pom.xml 文件中引入以下配置:

<dependency>
    <groupId>cn.idev.excelgroupId>
    <artifactId>fastexcelartifactId>
    <version>1.0.0version>
dependency>

如果您使用 Gradle 进行项目构建,请在 build.gradle 文件中引入以下配置:

dependencies {
    implementation 'cn.idev.excel:fastexcel:1.0.0'
}

EasyExcel 与 FastExcel 的区别:

  • FastExcel 支持所有 EasyExcel 的功能,但是 FastExcel 的性能更好,更稳定。
  • FastExcel 与 EasyExcel 的 API 完全一致,可以无缝切换。
  • FastExcel 会持续的更新,修复 bug,优化性能,增加新功能。EasyExcel 如何升级到 FastExcel
1. 修改依赖

将 EasyExcel 的依赖替换为 FastExcel 的依赖,如下:


<dependency>
    <groupId>com.alibabagroupId>
    <artifactId>easyexcelartifactId>
    <version>xxxxversion>
dependency>

依赖替换为

<dependency>
    <groupId>cn.idev.excelgroupId>
    <artifactId>fastexcelartifactId>
    <version>1.0.0version>
dependency>
2. 修改代码

将 EasyExcel 的包名替换为 FastExcel 的包名,如下:

// 将 easyexcel 的包名替换为 FastExcel 的包名
import com.alibaba.excel.**;

替换为

import cn.idev.excel.**;
3. 不修改代码直接依赖 FastExcel

如果由于种种原因您不想修改代码,可以直接依赖 FastExcel ,然后在 pom.xml 文件中直接依赖 FastExcel。EasyExcel 与 FastExcel 可以共存,但是长期建议替换为 FastExcel。

4. 建议以后使用 FastExcel 类

为了兼容性考虑保留了 EasyExcel 类,但是建议以后使用 FastExcel 类,FastExcel 类是FastExcel 的入口类,功能包含了 EasyExcel 类的所有功能,以后新特性仅在 FastExcel 类中添加。

简单示例:读取 Excel 文件 下面是读取 Excel 文档的例子:

// 实现 ReadListener 接口,设置读取数据的操作
public class DemoDataListener implements ReadListener<DemoData{
    @Override
    public void invoke(DemoData data, AnalysisContext context) {
        System.out.println("解析到一条数据" + JSON.toJSONString(data));
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        System.out.println("所有数据解析完成!");
    }
}

public static void main(String[] args) {
    String fileName = "demo.xlsx";
    // 读取 Excel 文件
    FastExcel.read(fileName, DemoData.classnew DemoDataListener()).sheet().doRead();
}

简单示例:创建 Excel 文件 下面是一个创建 Excel 文档的简单例子:

// 示例数据类
public class DemoData {
    @ExcelProperty("字符串标题")
    private String string;
    @ExcelProperty("日期标题")
    private Date date;
    @ExcelProperty("数字标题")
    private Double doubleData;
    @ExcelIgnore
    private String ignore;
}

// 填充要写入的数据
private static List data() {
    List list = new ArrayList<>();
    for (int i = 0; i 10; i++) {
        DemoData data = new DemoData();
        data.setString("字符串" + i);
        data.setDate(new Date());
        data.setDoubleData(0.56);
        list.add(data);
    }
    return list;
}

public static void main(String[] args) {
    String fileName = "demo.xlsx";
    // 创建一个名为“模板”的 sheet 页,并写入数据
    FastExcel.write(fileName, DemoData.class).sheet("模板").doWrite(data());}
来源:网络

1. Java面试题精选阶段汇总,已更新450期~

2. 推荐一款精美、高质量、开源的问卷系统

3. 一款高颜值、开源的物联网一体化平台

4. 18 个一线工作中常用 Shell 脚本【实用版】

PS:因公众号平台更改了推送规则,如果不想错过内容,记得读完点一下在看,加个星标,这样每次新文章推送才会第一时间出现在你的订阅列表里。

“在看”支持我们,共同成长