首页 > 代码库 > Apache POI

Apache POI

Apache POI Excel操作提供了两套API

HSSF,用于操作office 97 office 2007 (不包含2007)之间的Excel文件,通常是.xls后缀。

XSSF,用于操作office 2007及之后版本的Excel文件,通常是.xlsx后缀

 

另外,自POI 3.8 beta3起,又新出了一个SXSSF API,该APIXSSF的区别是,在处理行数较大的Excel文件时只需要占用较少的内存,因为它采用了流式的处理方式,利用一个滑动窗口来决定内存中存放哪些信息。位于窗口外的数据将不被保存在内存中。

这有点类似于操作XML的两套API DOMSAX那样。

举例来说,一个包含一万条数据的Excel,如果使用XSSF的话,整个文件所对应的Java对象都将加载到内存中,所以你可以在内存中快速的访问Excel的任意部分,但是缺点也显而易见,就是占用了大量内存。那么如果使用XSSF的话,滑动窗口如果定义为100大小,那么随着处理的进行该窗口从0100行数据慢慢往下移动,比如到了29129,那么之前的28行数据将会从内存中移出,并持久化到硬盘的临时文件中,所以当窗口移动到了29,你想要访问128的数据就没那么容易了。

 

SS模型

POI 3.5之后,有了新的SS接口,由于HSSF XSSF的接口都是不同的,虽然整个模型架构区别不大。比如 HSSF有自己的 Row类,自己的CellValue类,XSSF也有自己的。而SS模型就是为了统一这两种接口的。

Apache POI