`
guimingyue
  • 浏览: 75734 次
  • 性别: Icon_minigender_1
  • 来自: 湖北
社区版块
存档分类
最新评论

POI使用SAX处理大量数据的xlsx格式的Excel文件

    博客分类:
  • Java
 
阅读更多

    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 SAXevent 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文件中的数据了。

分享到:
评论
1 楼 zi_wu_xian 2016-09-02  
POI获取到xlsx文件中的数据和获取xls文件中的数据代码肯定不一样的,编程代码太大,用PageOffice导入excel中数据的话,就不用这么麻烦

相关推荐

    使用Poi读取大数据量excel的方法

    本篇文章将详细讲解如何利用Apache POI库在Android环境中高效地处理大数据量的Excel文件,无论是2003的.xls格式还是2007及以后的.xlsx格式。 首先,我们需要在项目中引入Apache POI库。如果是Maven项目,可以在pom....

    POI处理Excel文件.zip

    针对Excel 2007及以上版本,由于其采用了新的文件格式——XML SpreadsheetML(.xlsx),POI提供了专门的处理方式。 Excel 2007及后续版本的文件实际上是以ZIP格式打包的一系列XML文件,这些XML文件存储了工作簿、...

    poi读取大文件Excel,使用xml格式解析,速度实测50mb文件13s,可指定sheet页内容,带工具类和测试类

    Apache POI 是一个广泛使用的Java库,用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在处理大型Excel文件时,传统的HSSF和XSSF模型可能会遇到性能瓶颈,因为它们将整个工作簿加载到内存中。为了...

    POI3.8组件研究(七)--基于XSSF and SAX (Event API)事件的解析

    -基于XSSF and SAX (Event API)事件的解析" 提到了Apache POI库的一个高级话题,主要关注的是如何使用XSSF(XML Spreadsheet Formatting Streams)和SAX(Simple API for XML)的Event API来解析Excel文件。...

    POI导入Excel文件--form表单提交

    - 对于大量数据,考虑使用SAX API,它以流式处理Excel,内存消耗较小。 通过以上步骤,我们可以利用Apache POI有效地导入Excel文件,并结合form表单提交的数据进行操作。这个过程在数据导入、批量处理或者数据分析...

    基于DOM4j和POI实现的XML文件转换为XLS(即标准EXCEL)的JAVA程序

    接下来,Apache POI是Apache软件基金会的一个开源项目,主要负责处理Microsoft Office文件格式,如XLS、XLSX、DOC和PPT等。对于我们的需求,Apache POI的HSSF和XSSF组件分别用于处理老版本的BIFF8格式(.xls)和新的...

    Java poi基于事件驱动读取excel 2007海量数据 处理空单元格

    该工具类是poi基于事件驱动去读取海量excel数据,解决内存溢出以及空单元格的问题。 该压缩包里面有两个文件,TestExcel.java主要是原始的处理方法,操作简单,适合小数据量的读取。 ExampleEventUserModelUtil.java...

    POI导入Excel并返回校验后的错误文件(原样)下载以及校验错误信息,同时加进度条

    POI导入Excel并返回校验后的错误文件(原样数据文件,并添加批注,注:由于批注只能加1000条,会在Excel后面添加一栏错误信息)下载以及页面展示校验错误信息,同时添加导入进度条,提供页面js和css代码,后端...

    poi读取Excel2007文件

    标题中的“poi读取Excel2007文件”指的是使用Apache POI库来处理Microsoft Office Open XML (OOXML) 格式的Excel文件,也就是.xlsx格式。Apache POI是Apache软件基金会的一个开源项目,它提供了Java API,使得开发者...

    java+poi读取excel数据 源码

    7. **优化性能**:对于大数据量的Excel文件,可以使用SAX API(SXSSF)以流式处理数据,降低内存占用。 8. **错误处理**:在实际应用中,需要处理可能出现的文件不存在、格式不正确、权限不足等异常。 9. **高级...

    poi导入导出Excel表格的所以jar包

    OOXML是微软为Office文件格式制定的新标准,支持更多的功能和特性,比如超链接、图表、数据验证等。 3. **xmlbeans-2.3.0.jar**: 这是Apache XMLBeans的实现,是一个将XML文档映射到Java对象的库。在Apache POI中,...

    Poi导出Excel工具类

    Apache POI 是一个开源库,专门用于处理 Microsoft Office 文件格式,包括 Excel。在这个场景中,"Poi导出Excel工具类"是一个已经封装好的Java类,设计用于高效地导出大量数据到Excel文件中,并且支持多sheet页的...

    java读取excel ,xls和xlsx

    在Java中,我们可以使用Apache POI库来处理这两种类型的Excel文件。 Apache POI是一个开源项目,它提供了API来读取、写入和操作Microsoft Office格式的文件,包括Excel。对于`.xls`文件,Apache POI使用了`HSSF`...

    poi读取excel所需jar包,需要的自取

    3. **poi-ooxml-3.8-20120326.jar**:这是POI的OOXML扩展库,提供了对OOXML文件格式的支持。它包含了一些额外的类和接口,用于处理OOXML特有的特性。 4. **xmlbeans-2.3.0.jar**:这是一个XML处理库,主要用于生成...

    Java解析XML文档(二):sax读取xml文件导出excel

    这个例子展示了如何使用SAX解析XML,并利用Apache POI将数据写入Excel。实际项目中,你可能需要根据XML文档的具体结构和需求进行适当的调整。同时,为了优化性能,可以在处理XML事件时,避免不必要的数据复制和内存...

    XML文件导出为本地excel文件

    本篇文章将详细讲解如何将XML文件导出为本地的Excel文件,这一过程涉及到数据解析、格式转换以及文件操作等多个关键知识点。 首先,我们需要了解XML的基本结构。XML文件由元素(Elements)、属性(Attributes)、...

    POI报表技术

    6. **异常处理**:在处理Excel文件时,需要考虑文件格式错误、数据类型不匹配、文件损坏等情况,合理的异常处理机制可以确保程序的健壮性。 7. **安全性**:在上传文件时,需要防止恶意文件的注入,例如病毒或脚本...

    POI -ExcelToXml所需的jar包

    最后,`poi-ooxml-3.17.jar` 是POI的一个扩展,专门用于处理Office Open XML(OOXML)格式,这是Microsoft Office 2007引入的新文件格式,包括.xlsx和.xlsm等。这个库确保了对新版本Excel文件的完整支持。 在实际的...

    轻量级xlxs文件读写(java实现,无外部依赖)

    Excel的xlsx格式是Microsoft Office 2007及更高版本使用的文件格式,基于OpenXML标准。本教程将详细讲解如何在Java中实现对xlsx文件的轻量级读写,无需依赖任何外部库。 首先,我们需要理解xlsx文件的本质。xlsx...

    poi 资料

    Apache POI是一个开源项目,主要用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在Java环境中,POI提供了一种方便的方式来读取、写入和修改这些文件,广泛应用于数据分析、自动化报告生成以及Web...

Global site tag (gtag.js) - Google Analytics