POI在处理Excel方面确实比较方便,但是当Excel数据量比较大的时候,使用POI处理就会导致java.lang.OutOfMemoryError: Java heap space的错误,当有大量数据写入xlsx文件时,POI为我们提供了SXSSFWorkBook类来处理,这个类的处理机制是当内存中的数据条数达到一个极限数量的时候就flush这部分数据,再依次处理余下的数据,这个在大多数场景能够满足需求。当对一个存有大量数据的文件的xlsx文件进行读操作时,使用WorkBook处理就不行了,因为POI对文件是先将文件中的cell读入内存,生成一个树的结构(针对Excel中的每个sheet,使用TreeMap存储sheet中的行)。如果数据量比较大,则同样会产生java.lang.OutOfMemoryError: Java heap space错误。这个错误明显就是内存不足,虽然可以通过调整JVM堆区域内存大小来解决,但是一定的内存只能解决一定的数据量,当文件的大小并不确定的时候使用调整堆内存大小的方法并不能很优雅的解决这个问题,POI官方推荐使用“XSSF and SAX(event API)”方式来解决,即使用SAX对xlsx中的sheet.xml文件进行解析,然后根据MS的OOXML格式规范在sheet.xml,style.xml和sharedString.xml中解析数据。如果我们直接使用SAX对这些xml进行解析,则必须使用SAX中的三个方法startElement,characters和endElement解析到sheet.xml中的数据,再在style.xml中解析出格式,或者到sharedString.xml中解析数据,所以必须熟悉MS的OOXML规范,幸运的是
POI官方为我们提供了eventusermodel来解决这个问题。在POI-OOXML这个jar包中有org.apache.poi.xssf.eventusermodel这个包,XSSFSheetXMLHandler这个类可以返回的数据已经全部转换成String类型,只需要实现POI定义的SheetContentsHandler接口就可以很方便的获取到xlsx文件中的数据了。
相关推荐
java使用poi读取xls格式和xlsx格式的excel文件
使用poi导出excel支持xls、xlsx格式大数据导出java工具类,支持同一个单元格不同文本格式。找了好久,加上自己修改后,调试通过,发布出来分享,(调整student类位置)包含所需jar包,工具类,使用示例
poi 方式导入 大量excel数据,将excelDir目录下文件考入f盘即可测试 poi 方式导入 大量excel数据,将excelDir目录下文件考入f盘即可测试
Java用POI实现根据Excel表格模板生成新的Excel并实现数据输出...
POI 创建 xls 或 xlsx 格式excel所需要的所有jar, 包括简化文件操作的FileUtils类所在的包
使用poi将xls格式的Excel转为xlsx,文件中的所有样式都可以完美转换,例如合并栏、背景和单元格样式等。Java源码
poi导入excel示例文件.xlsx
主要介绍了java poi sax方式处理大数据量excel文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Java POI根据模板生成Excel文件并写入磁盘,资源文件仅为实现的简单测试Demo,并没有进行代码优化,可以直接导入运行,资源文件仅供参考。
使用poi解析excel文件,并将数据写入到数据库 项目说明 这个项目实现的功能是读取excel文件中的数据,解析并写入数据库。 读取的excel文件位于项目目录下的 excel\0805.xlsx 使用IntelliJ IDEA开发此项目 使用MYSQL...
提供POI编译DEX前的jar包。 提供POI编译DEX前的jar包。 提供POI编译DEX前的jar包。用于Android解析Excel的工程查看
从http://download.csdn.net/detail/whatismvc/3696185 和http://download.csdn.net/detail/whatismvc/3694229 下载的, 处理大数据量的Excel 2007文件不内存溢出,我试过的最大数据是 26000行,222列的xlsx。
poi导入excel示例文件.xlsx
Excel poi 支持xls 和xlsx,支持03 和07 版表格,excel 通用工具类及使用参考
这是我在公司实习的时候研究的课题,主要将大量数据从数据库导出到Excel文件。(一般是值Excel2007及以后版本)因为Excel2003及以前的版本中能保持的数据量是有限制的。Excel2007及以后版本中的数据能保持100万条...
在界面上有一个TextField,一个浏览按钮,一个导入按钮。当选择浏览按钮时,弹出文本选择窗口,选择Excel文件之后,将路径显示在TextField中。点击导入,将Excel中的数据保存到SqlServer数据库中。
本工具可以将Oracle数据库中的指定表导出为Excel 2007 xlsx 格式文件,经过测试最大上限为120000条数据,实际情况据JVM内存而定。压缩包含包含源代码与编译后的文件。 详情请查看:...
使用POI来处理Excel和Word文件格式
Javapoi对excel的文档处理,对时间日期的格式一些方法
java poi导出大量数据到Excel