开发中经常会设计到excel的处理,如导出Excel,导入Excel到数据库中,操作Excel目前有两个框架,一个是apache 的poi, 另一个是 Java Excel(JXl)二者的区别主要如下:
(1)JXL是一开放源码项目,使用Java编写,只能对Excel进行操作——读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件等,属于比较老的框架,它只支持到Excel 95-2000的版本。现在已经停止更新和维护。POI是apache的项目,可对微软的Word,Excel,PPt进行操作,包括office2003和2007,Excl2003和2007。POI现在一直有更新。所以现在主流使用POI。
(2)JXl中文支持非常好,操作简单,跨平台支持非常完美,但是效率较低,图片支持不完善,对格式的支持不如POI强大。
POI效率高(用内存消耗换取部分效率),支持公式、宏,能够修饰单元格属性,支持字体、数字、日期等,对格式支持强大,但是不能跨平台。
下面看一下二者对JVM虚拟机内存消耗的情况:数据量3000条数据,每条60列.JVM虚拟机内存大小64M。
使用POI:运行到2800条左右就报内存溢出.
使用JXL:3000条全部出来,并且内存还有21M的空间.
关于两者效率方面,也是基于大数据量而言的,数据量小的话基本上差别不大。但是随着数据量增大,POI消耗的JVM内存远比JXL消耗的多,性能直线下降。所以在处理大数据量的时候或者简单的单表excel导入导出的需求,建议使用JXL,可以保证效率和较小内存消耗。对于报表类的,涉及月份数据量,多表数据聚合在一起建议使用POI。