使用常用场景
1 将大量的数据导入为excel表格
2 将excel表中的信息录入到数据库(比如习题上传)(也叫批量插入),大大减轻我们人工乃至网站的录入量
开发中经常会涉及到对Excel的处理,如导入Excel,导出Excel到数据库
目前操作excel比较流行的就是Apache POI和阿里巴巴的easyExcel
Apache POI官网: https://poi.apache.org
Apache给我们提供的POI不仅可以操作excel格式,对于word,ppt,visio都是提供支持的,而且语法大概类似
HSSF是处理普通的excel的
XSSF是处理OOXML格式的excel的
值得注意点是,虽然HSSF和XSSF都可以处理excel,但是还是有差距
比如excel主要有两个版本 03版和07版,其中03版的行数最多只能存65535行,07版的是没有限制的
如果想要操作Word,那么使用HWPF
如果想要操作PPT,那么使用HSLF
如果想要操作Visio,那么使用HDGF
原生的POI使用起来比较麻烦,而且量大的时候会报OOM异常(out of memory的简称,称之为内存溢出),但是现在很多市面上的工具底层也是会使用封装POI的
easyExcel(阿里巴巴开源工具)
官网:https://github.com/alibaba/easyexcel
官方文档:https://www.yuque.com/easyexcel/doc/easyexcel
easyExcel是阿里巴巴开源的一个对于excel处理工具(框架)以使用简单,节省内存著称
easyExcel能大大减少内存占用的主要原因是在解析excel中没有将文件数据一次性全部加载到内存中,而是从磁盘上一行一行的读取,逐个解析
由于POI比较原生比较复杂,我们后研发出新的(工具)框架easyExcel,它是阿里巴巴退出的对于POI的后续产品,并且对POI做了升级和优化,不会因为excel数据量过大引起oom异常(内存溢出),使我们用起来更加的方便(读写Excel只需要一行代码!)
poi和easyExcel的不同
主要在于内存和操作过程
比如我们现在excel表有100W数据
1 poi是先把数据加载到内存,如果我们内存比较小,Java是会直接报OOM内存溢出异常,这时候就会有问题,但是easyExcel它就比较简单只能,就算读写100W行数据,会一行一行的读写,不会直接全部解析
2poi会一次性全部读取和返回execl表格的数据,但是easyExcel不会这样,它没有将文件数据一次性全部加载到内存中,而是从磁盘上一行一行的读取,逐个解析
poi和easyExcel的本质上就是时间和空间的转换,根据我们的需求自行选择即可