EasyExcel,被救了!

打印 上一主题 下一主题

主题 878|帖子 878|积分 2634

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 的一些显著特点包括:

  • 1、完全兼容原 EasyExcel 的全部功能和特性,这使得用户可以无缝过渡。
  • 2、从 EasyExcel 迁移到 FastExcel 只需简单地更换包名和 Maven 依赖即可完成升级。
  • 3、在功能上,比 EasyExcel 提供更多创新和改进。
  • 4、FastExcel 1.0.0 版本新增了读取 Excel 指定行数和将 Excel 转换为 PDF 的功能。
他们计划在未来推出更多新特性,以不断提升用户体验和工具实用性。
FastExcel 致力于成为您处理惩罚 Excel 文件的最佳选择。
推荐一个开源免费的 Spring Boot 实战项目:
https://github.com/javastacks/spring-boot-best-practice
重要特性:

  • 高性能读写:FastExcel 专注于性能优化,能够高效处理惩罚大规模的 Excel 数据。相比一些传统的 Excel 处理惩罚库,它能显著低落内存占用。
  • 简单易用:该库提供了简便直观的 API,使得开辟者可以轻松集成到项目中,无论是简单的 Excel 操作照旧复杂的数据处理惩罚都能快速上手。
  • 流式操作:FastExcel 支持流式读取,将一次性加载大量数据的问题降到最低。这种设计方式在处理惩罚数十万甚至上百万行的数据时尤为紧张。
建议您使用最新版本的 FastExcel,由于最新版本中的性能优化、BUG修复和新功能都会让您的使用更加方便。
当前 FastExcel 底层使用 poi 作为底子包,如果您的项目中已经有 poi 相关组件,需要您手动排除 poi 的相关 jar 包。
如果您使用 Maven 进行项目构建,请在 pom.xml 文件中引入以下配置:
  1. <dependency>
  2.     <groupId>cn.idev.excel</groupId>
  3.     <artifactId>fastexcel</artifactId>
  4.     <version>1.0.0</version>
  5. </dependency>
复制代码
如果您使用 Gradle 进行项目构建,请在 build.gradle 文件中引入以下配置:
  1. dependencies {
  2.     implementation 'cn.idev.excel:fastexcel:1.0.0'
  3. }
复制代码
EasyExcel 与 FastExcel 的区别:

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

将 EasyExcel 的依赖替换为 FastExcel 的依赖,如下:
  1. <dependency>
  2.     <groupId>com.alibaba</groupId>
  3.     <artifactId>easyexcel</artifactId>
  4.     <version>xxxx</version>
  5. </dependency>
复制代码
的依赖替换为
  1. <dependency>
  2.     <groupId>cn.idev.excel</groupId>
  3.     <artifactId>fastexcel</artifactId>
  4.     <version>1.0.0</version>
  5. </dependency>
复制代码
2. 修改代码

将 EasyExcel 的包名替换为 FastExcel 的包名,如下:
  1. // 将 easyexcel 的包名替换为 FastExcel 的包名
  2. import com.alibaba.excel.**;
复制代码
替换为
  1. import cn.idev.excel.**;
复制代码
3. 不修改代码直接依赖 FastExcel

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

为了兼容性考虑保留了 EasyExcel 类,但是建议以后使用 FastExcel 类,FastExcel 类是FastExcel 的入口类,功能包含了 EasyExcel 类的全部功能,以后新特性仅在 FastExcel 类中添加。
简单示例:读取 Excel 文件 下面是读取 Excel 文档的例子:
  1. // 实现 ReadListener 接口,设置读取数据的操作
  2. public class DemoDataListener implements ReadListener<DemoData> {
  3.     @Override
  4.     public void invoke(DemoData data, AnalysisContext context) {
  5.         System.out.println("解析到一条数据" + JSON.toJSONString(data));
  6.     }
  7.     @Override
  8.     public void doAfterAllAnalysed(AnalysisContext context) {
  9.         System.out.println("所有数据解析完成!");
  10.     }
  11. }
  12. public static void main(String[] args) {
  13.     String fileName = "demo.xlsx";
  14.     // 读取 Excel 文件
  15.     FastExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead();
  16. }
复制代码
简单示例:创建 Excel 文件 下面是一个创建 Excel 文档的简单例子:
  1. // 示例数据类
  2. public class DemoData {
  3.     @ExcelProperty("字符串标题")
  4.     private String string;
  5.     @ExcelProperty("日期标题")
  6.     private Date date;
  7.     @ExcelProperty("数字标题")
  8.     private Double doubleData;
  9.     @ExcelIgnore
  10.     private String ignore;
  11. }
  12. // 填充要写入的数据
  13. private static List<DemoData> data() {
  14.     List<DemoData> list = new ArrayList<>();
  15.     for (int i = 0; i < 10; i++) {
  16.         DemoData data = new DemoData();
  17.         data.setString("字符串" + i);
  18.         data.setDate(new Date());
  19.         data.setDoubleData(0.56);
  20.         list.add(data);
  21.     }
  22.     return list;
  23. }
  24. public static void main(String[] args) {
  25.     String fileName = "demo.xlsx";
  26.     // 创建一个名为“模板”的 sheet 页,并写入数据
  27.     FastExcel.write(fileName, DemoData.class).sheet("模板").doWrite(data());}
复制代码
更多文章推荐:
1.Spring Boot 3.x 教程,太全了!
2.2,000+ 道 Java口试题及答案整理(2024最新版)
3.免费获取 IDEA 激活码的 7 种方式(2024最新版)
以为不错,别忘了顺手点赞+转发哦!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南飓风

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表