这是我参与11月更文挑战的第27天,活动详情查看:2021最后一次更文挑战
hello,你好呀,我是灰小猿,一个超会写bug的程序猿!
在上一篇文章中我和大家简单的介绍了使用easyexcel技术在有对象和无对象情况下实现Excel文件的写入操作,
那么今天这一篇文章,我就继续来和大家讲一下,使用easyexcel技术如何读取excel中的数据呢?
easyexcel的优势
在Java领域解析、生成Excel比较有名的框架有Apache poi,jxl等,但是在使用的时候,其实他们都存在一个严重的问题,就是非常的耗内存,如果你的系统并发量不大的话,可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的垃圾回收.
而EasyExcel是阿里巴巴开源的一个excel处理框架,他具有使用简单,节省内存的特点,EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析的,这一特点待会在读取excel数据的时候也会体现出来。
添加easyexcel依赖
使用easyexcel时需要在pom中导入相应的依赖文件,
1 | xml复制代码 <!--poi依赖03版本--> |
由于easyexcel是在poi的基础上发展起来的,所以在导入依赖的时候,也需要导入对03和07版本的excel的依赖。
使用easyexcel读取数据
在使用easyexcel读取文件数据的时候,需要设置一个监听器,通过实现该监听器,就可以实现数据的单行读取操作, 我们以下面的这个数据对象为例:
1 | less复制代码 |
读取的数据内容如下:
监听器的实现
在读取excel数据的时候,需要实现AnalysisEventListener监听器,其中需要传入对应的数据类型,在该监听接口中,主要使用的方法是:\
- invoke:一行一行读取,每读取一行数据时就会调用该方法。
- invokeHeadMap:读取表头数据,
- doAfterAllAnalysed:所有数据读取完毕之后调用,一般用于对最后读取到的数据进行处理。
- onException:在转换异常,获取其他异常的情况下会调用此接口,抛出异常就停止读取,如果不抛出异常就继续读取
接口的实现如下:
1 | java复制代码 |
接口实现完毕之后,进行数据读取的方法其实是非常简单,只需要一句代码就可以了,
读取如下:
1 | csharp复制代码 /** |
读取结果如下:
以上就是使用easyexcel技术读取数据的操作, 之后会继续和大家分享读取和写入复杂数据。
觉得不错,点赞关注小猿呀!
我是灰小猿,我们下期见!
本文转载自: 掘金