头图

众所周知,上个月的时候,GitHub 知名开源项目 EasyExcel 曾对外发布公告将停止主动更新,当时这个消息在网上还引发了不少讨论。

至此,这个运营了 6 年,在 GitHub 上累计收获 32k+ star 的知名项目基本就宣告停更了,大家都觉得挺可惜的。

然而,就在阿里官宣停更的同时,EasyExcel 的原作者个人当即也站出来向大家透露了一个新项目计划,表示自己将会继续接手,并重启一个新项目开源出来。

那现在,这个承诺已经如期兑现了

就在上周,EasyExcel 作者自己也正式发文表示,EasyExcel 的替代方案正式来了,相信不少同学也看到了这个消息。

作者把新项目定名为:FastExcelps:作者一开始初定叫 EasyExcel-Plus,后来改名为了 FastExcel),用于取代已经被阿里官方停更的 EasyExcel 项目。

新项目 FastExcel 同样定位在一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具。

并且新项目将兼容老的已停更的 EasyExcel 项目,并提供项目维护、性能优化、以及bugFix。

同时作者还表示,新项目 FastExcel 将始终坚持免费开源,并采用最开放的 MIT 协议,使其适用于任何商业化场景,以便为广大开发者和企业继续提供极大的自由度和灵活性。

不得不说,作者的格局还是相当打开的。

大家都知道,其实 EasyExcel 项目的作者原本就是工作在阿里,负责主导并维护着这个项目。

然而就在去年,Easyexcel 作者就从阿里离职出来创业了。

所以在上个月 EasyExcel 被宣布停更的时候,当时就有不少网友猜测各种原因。当然背后的真相我们不得而知,不过作为用户的角度来看,Easyexcel 以另外一种形式被继续开源和更新也何尝不是一件利好用户的好消息。

之前的 EasyExcel 之所以受到开发者们的广泛关注,主要是因为它具备了许多显著的特点和优势,而这次的新项目 FastExcel 更可谓是有过之而无不及。

  • 首先,FastExcel 同样拥有卓越的读写性能,能够高效地处理大规模的Excel数据,这对于需要处理大量数据的开发者来说依然是一大福音。
  • 其次,FastExcel 的 API设计简洁直观,开发者可以轻松上手,无需花费大量时间学习和熟悉。
  • 再者,FastExcel 同样支持流式读取,可以显著降低内存占用,避免在处理大规模数据时可能出现的内存溢出问题。
  • 此外,新项目 FastExcel 完全兼容原来 EasyExcel 的功能和特性,用户可以在项目中无缝过渡,从 EasyExcel 迁移到 FastExcel 只需更换包名和依赖即可完成升级。

FastExcel 的安装配置也非常简单。

对于使用 Maven 或 Gradle 进行构建的项目来说,只需在相应的配置文件中添加如下所示的 FastExcel 的依赖即可。

  • Maven项目
<dependency>
    <groupId>cn.idev.excel</groupId>
    <artifactId>fastexcel</artifactId>
    <version>1.0.0</version>
</dependency>
  • Gradle项目
dependencies {
    implementation 'cn.idev.excel:fastexcel:1.0.0'
}

在实际使用中,以读取Excel文件为例,开发者只需定义一个数据类和一个监听器类,然后在主函数中调用 FastExcel 的读取方法,并传入数据类和监听器类即可。

FastExcel 会自动解析 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.class, new DemoDataListener()).sheet().doRead();
}

同样地,写 Excel 文件也非常简单,开发者只需定义一个数据类,并填充要写入的数据,然后调用 FastExcel 的写入方法即可。

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

// 填充要写入的数据
private static List<DemoData> data() {
    List<DemoData> 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());
}

过程可谓是清晰易懂、直观明了,所以这对于开发者来说,在使用 FastExcel 时可以轻松上手。

新项目 FastExcel 刚开源不久,目前在 GitHub 上的 star 标星就已经突破了 2000!这也可见其受欢迎程度。

而且伴随着新项目的开源上线,开发者们的参与热情也是十分高涨的。

这才多少天,项目就已经收到上百条issue了。

仔细看了一下会发现,其中一大部分是开发者们对于新项目所提的需求或反馈。

而还有另外一部分则是对于新项目 FastExcel 以及作者的肯定与鼓励。

文章的最后也感谢项目作者的辛勤维护,大家有需要的话也可以上去提需求或者反馈一些意见,另外感兴趣的同学也可以上去研究研究相关的代码或者参与项目,尤其是数据处理这一块,应该会挺有收获的。

注:本文在GitHub开源仓库「编程之路」 https://github.com/rd2coding/Road2Coding 中已经收录,里面有我整理的6大编程方向(岗位)的自学路线+知识点大梳理、面试考点、我的简历、几本硬核pdf笔记,以及程序员生活和感悟,欢迎star。

CodeSheep
3.4k 声望7.7k 粉丝