WorkbookFactory.create方法可以读取XLS和XLSX文件,而不用担心版本问题。
下面以5M大小xls格式的Excel文件为例:
- 使用读取文件方式发现读取速度非常慢,使用Jvisualvm查看发现内存占用小,byte[]大约25兆 WorkbookFactory.create(File)
此类是org.apache.poi.hssf.record下RecordFactory的createRecords方法
- 查看源码发现卡在这个循环中
- 这里使用的是创建文档输入流DocumentInputStream
-
使用读取流方式发现读取速度快,但是内存占用大,大约160M
WorkbookFactory.create(InputStream)
-
- 依然走的这段代码,但是不会卡
- 查看源码原来创建之前就已经把输入流转换了
- 这里转换的是缓冲流,读取速度更快