Atitit poi读取大文件内存溢出的解决 目录 1. poi提供了两种读取excel的方式,一种是类似xml的Dom, 1 2. POI官网上提到XSSF有三种读写excel,POI地址 1 3

Apache POI 提供了两种读取 Excel 的方式,DOM 方式内存消耗大,适合小文件;SAX 事件驱动方式适用于大文件,内存占用小。本文介绍了如何使用 XSSFReader 和 EventUserModel 来处理大文件,避免内存溢出。通过处理每个单元格的事件,可以有效地读取和解析 .xlsx 文件。
摘要由CSDN通过智能技术生成

Atitit poi读取大文件内存溢出的解决

 

目录

1. poi提供了两种读取excel的方式,一种是类似xml的Dom, 1

2. POI官网上提到XSSF有三种读写excel,POI地址 1

3. 可以看到有三种模式:eventmodel方式,基于事件驱动,SAX的方式解析excel 2

4. /OfficeExcelPrj/src/officefile/ExampleEventUserModel.java 2

5. ref 11

 

  1. poi提供了两种读取excel的方式,一种是类似xml的Dom,

把整个文档load到内存中再解析,这种方法在org.apache.poi.xssf.usermodel包中,好用,但占内存;还有一种就是类似xml的Sax解析,每次只读取一条记录,这种方式占用的内存很小,但API用起来没那么方便,专门为读取大文件而设定的,这种方法在org.apache.poi.xssf.eventusermodel包中。

 

 

  1. POI官网上提到XSSF有三种读写excel,POI地址

:http://poi.apache.org/spreadsheet/index.html。官网的图片:

  1. 可以看到有三种模式:eventmodel方式,基于事件驱动,SAX的方式解析excel

1、eventmodel方式,基于事件驱动,SAX的方式解析excel(.xlsx是基于OOXML的),CPU和内存消耗非常低,但是只能读不能写

2、usermodel,就是我们一般使用的方式,这种方式可以读可以写,但是CPU和内存消耗非常大

3、SXSSF,POI3.8以后开始支持,这种方式只能写excel

 

 

  1. /OfficeExcelPrj/src/officefile/ExampleEventUserModel.java

 

package officefile;

 

import java.io.InputStream;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

 

import org.apache.poi.xssf.eventusermodel.XSSFReader;

import org.apache.poi.xssf.model.SharedStringsTable;

import org.apache.poi.xssf.usermodel.XSSFRichTextString;

import org.apache.commons.lang3.StringUtils;

import org.apache.log4j.Logger;

import org.apache.poi.openxml4j.opc.OPCPackage;

import org.apache.poi.util.StringUtil;

import org.xml.sax.Attributes;

import org.xml.sax.ContentHandler;

import org.xml.sax.InputSource;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值