easyexcel 读取指定行数据_惊了!7 行代码优雅地实现 Excel 文件导出功能?

点击上方蓝色字体,选择“置顶公众号”

优质文章,第一时间送达

c59fabdbb9cf97a7362e1fcc34cb8cdd.png

作者:犬小哈

目录

  • 一、前言

  • 二、Apache poi、jxl 的缺陷

  • 三、阿里出品的 EasyExcel,安利一波

  • 四、EasyExcel 解决了什么

  • 五、快速上手

  • 六、特殊场景支持

  • 七、Web 下载示例代码

  • 八、需要注意的点

  • 九、总结

一、前言

关于导出 Excel 文件,可以说是大多数服务中都需要集成的功能。那么,要如何优雅快速地(偷懒地)去实现这个功能呢?

你可能第一想法是:这还不简单?用 Apache 开源框架 poi, 或者 jxl 都可以实现啊。面向百度编程,把代码模板 copy 下来,根据自己的业务再改改,能有多难?

4d846d3f5f8d8fde2f2602e592f67a1b.png

嗯.. 的确不难,但是你的代码可能是下面这个熊样子的:

fe3225b9978b75fab2879bcef4781e46.png

上面这段代码看上去是不是又臭又长呢?今天,小哈将教您如何使用 7 行代码搞定 Excel 文件生成功能!

4e1966bd333d41c7ad4833d8d8df93aa.png

二、Apache poi、jxl 的缺陷

在说如何实现之前,我们先来讨论一下传统 Excel 框架的不足!除了上面说的,Apache poi、jxl 都存在生成 excel 文件不够简单优雅快速外,它们都还存在一个严重的问题,那就是非常耗内存严重时会导致内存溢出

POI 虽然目前来说,是 excel 解析框架中被使用最广泛的,但这个框架并不完美。

为什么这么说呢?

开发者们大部分使用 POI,都是使用其 userModel 模式。而 userModel 的好处是上手容易使用简单,随便拷贝个代码跑一下,剩下就是写业务转换了,虽然转换也要写上百行代码,但是还是可控的。

然而 userModel 模式最大的问题是在于,对内存消耗非常大,一个几兆的文件解析甚至要用掉上百兆的内存。现实情况是,很多应用现在都在采用这种模式,之所以还正常在跑是因为并发不大,并发上来后,一定会OOM或者频繁的 full gc。

三、阿里出品的 EasyExcel,安利一波

什么是 EasyExcel? 见名知意,就是让你操作 Excel 异常的酸爽。先来看下 EasyExcel GitHub 官方截图:

9e530a9060607ed10675376f860257cd.png

截止目前为止已有 5519 Star, 官方对其的简介是:

快速、简单避免

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您想了解关于easyexcel的流返回的内容。那么,首先,您需要了解easyexcel中的一些基本概念: 1. ExcelWriter:用于生成Excel文件的对象。 2. Sheet:Excel文件中的一个表单。 3. Row:表单中的一。 4. Cell:中的一个单元格。 接下来,我们就可以通过使用ExcelWriter对象来将数据写入Excel文件,并将生成的文件以流的形式返回给用户。 示例代码如下: ```java //创建ExcelWriter对象 ExcelWriter writer = new ExcelWriter(response.getOutputStream(), ExcelTypeEnum.XLSX); //创建Sheet对象 Sheet sheet = new Sheet(1, 0); //设置表头 List<String> head = new ArrayList<>(); head.add("姓名"); head.add("年龄"); head.add("性别"); sheet.setHead(head); //写入数据 List<List<Object>> data = new ArrayList<>(); List<Object> rowData = new ArrayList<>(); rowData.add("张三"); rowData.add(18); rowData.add("男"); data.add(rowData); sheet.setClazz(Student.class); writer.write(data, sheet); //关闭流 writer.finish(); ``` 在上面的示例代码中,我们首先创建了一个ExcelWriter对象,并将其绑定到输出流response.getOutputStream()上。然后,我们创建了一个Sheet对象,并设置了表头和数据。最后,我们通过调用ExcelWriter对象的write()方法将数据写入Excel文件中,并最终通过调用finish()方法关闭输出流。 至此,我们已经实现了将数据写入Excel文件,并将生成的文件以流的形式返回给用户。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值