Excel大数据量导入、导出的相关问题及解决方案
在Java项目中经常会出现对于Office-Excel操作的功能, 例如Excel文件的导入与导出功能.一般项目中使用到的插件包含(apache-poi, ms-jacob)由于Jacob受限于Windows平台, 所以选择apache-poi的居多!
在POI实际的使用过程中, 一般没有太多的问题, 但是一旦Excel中数据量过多则会出现一些问题.
1.内存溢出
2.超出行数限制
97-03(xls): 最多65535行
07--(xlsx): 最多104万行
excel导入的文件中内容过多在读取并解析的过程中则会出现内存溢出.
07版本以后的excel底层为xml文件, 数据存储在xml文档中
入上图所述, 修改excel文档后缀xlsx为zip压缩文件, 用压缩包打开该文件.能看到里面的xml.
以sharedString.xml与workbook.xml两个文件为主. sharedString.xml存储的是excel中的变量,
workbook.xml中存储的则为sheet单元的数据.通过POI提供的解析xml的类XLSX2CSV.java来去解析
excel就不会出现内存溢出的问题了!
|