java处理excel-xlsx格式大文件的解决方案

1、第一次读取7M左右的ecxel文件,使用poi 库实现,参考了下面的博文。

http://www.cnblogs.com/chenfool/p/3632642.html

使用上面的方法在 下面WorkbookFactory.create()这里会出现内存溢出的错误,将eclipse的参数调整为-Xmx3072m,仍然会出现这个错误。

fis = new FileInputStream(file);
book = WorkbookFactory.create(fis); 

应该是因为上面的方法使用的DOM解析模式,使用流式解析大文件,不会出现内存溢出的问题。

2、经过google,找到了下面的帖子:http://www.iteye.com/topic/624969excel2007文件格式与之前版本不同,之前版本采用的是微软自己的存储格式。07版内容的存储采用XML格式,所以,理所当然的,对大数据量的 xlsx文件的读取采用的也是XML的处理方式SAX。

使用上面的方法,在XMLReader parser = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
这一句会出现java.lang.ClassNotFoundException: org.apache.xerces.parsers.SAXParser的错误。自己下载xerces.jar文件载入后会出现

java.lang.AbstractMethodError: org.apache.xerces.dom.ElementImpl.getTextContent()Ljava/lang/String的错误。

看来只能找其他方法了。

3、经过一番google,找到了下面这个链接

https://blogs.oracle.com/mei/entry/java_lang_classnotfoundexception_org_apache按照上面的链接中介绍的方法,将生成XMLReader的代码改为下面的方式即可解决问题。
1 SAXParserFactory m_parserFactory = null;
2 // If unable to create an instance, let‘s try to use
3 // the XMLReader from JAXP
4 m_parserFactory = SAXParserFactory.newInstance();
5 m_parserFactory.setNamespaceAware(true);
6
7 XMLReader parser = m_parserFactory.newSAXParser().getXMLReader();

附录:整个过程中参考的网页链接如下:

java 读取excel 2007 .xlsx文件 poi实现 经测试7M左右文件没有问题

http://www.cnblogs.com/chenfool/p/3632642.html

大数据量的excel文件读取——excel2007(含代码及示例)   经测试36M左右文件没有问题,需按照上面所述稍作修改。

http://www.iteye.com/topic/624969

java.lang.AbstractMethodError: org.apache.xerces.dom.ElementImpl.getTextContent()Ljava/lang/String  xerces引起此错误的正确原因描述

http://stackoverflow.com/questions/14014989/java-lang-abstractmethoderror-org-apache-xerces-dom-elementimpl-gettextcontent

java.lang.ClassNotFoundException: org.apache.xerces.parsers.SAXParser   不使用xerces.jar的解决办法

https://blogs.oracle.com/mei/entry/java_lang_classnotfoundexception_org_apache

时间: 2024-10-06 04:06:42

java处理excel-xlsx格式大文件的解决方案的相关文章

POI操作Excel详解,读取xls和xlsx格式的文件

package org.ian.webutil; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.B

java与python在处理大文件操作上的对比

1.问题描述 现在对一个2g的大文件,抽取第二列含有特点16个串的信息,并将这些含有特串的信息,写回到两个文件中 2.具体实现 (1)java代码 package naifen; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java

Java使用内存映射实现大文件的上传

在处理大文件时,如果利用普通的FileInputStream 或者FileOutputStream 抑或RandomAccessFile 来进行频繁的读写操作,都将导致进程因频繁读写外存而降低速度.如下为一个对比实验. package test; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOExc

Java中用内存映射处理大文件

在处理大文件时,如果利用普通的FileInputStream 或者FileOutputStream 抑或RandomAccessFile 来进行频繁的读写操作,都将导致进程因频繁读写外存而降低速度.如下为一个对比实验. [java] view plain copy package test; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundExceptio

上传大文件的解决方案

需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify文件上传组件,在项目使用的jslib项目中找到了BJUI框架集成jQuery Uploadify的部分,这部分代码封装在bjui-all.js文件中, 在bjui-all.js文件中的全局变量定义中有以下

如何分发大文件、大文件传输解决方案

随着云计算.大数据技术不断发展,4K 视频.虚拟现实(VR).视频直播等互联网应用领域不断升级更新,企业网.数据中心规模持续扩大,企业拥有的数据急剧增长,海量文件随之产生. 同时,互联网时代,众多行业都面临大型文件传输的问题,速度慢,是否安全,是优先考虑的前提! 一直以来,企业通常使用QQ软件.FTP.网盘或拆分数据.快递硬盘等方式进行海量文件上传和下载. 但是这些方式存在很多弊端,导致企业不能有效利用海量文件: 通常的一些方法: 1.使用QQ等软件直接对传:这种方法在线随时都可以传,比较方便,

Flash大文件断点续传解决方案

核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开始. 如何分,利用强大的js库,来减轻我们的工作,市场上已经能有关于大文件分块的轮子,虽然程序员的天性曾迫使我重新造轮子.但是因为时间的关系还有工作的关系,我只能罢休了.最后我选择了百度的WebUploader来实现前端所需. 如何合,在合之前,我们还得先解决一个问题,我们如何区分分块所属那个文件的

.net上传大文件的解决方案

ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NET页面设计:TextBox和Button按钮. TextBox中需要自己受到输入文件夹的路径(包含文件夹),通过Button实现选择文件夹的问题还没有解决,暂时只能手动输入. 两种方法:生成rar和zip. 1.生成rar using Microsoft.Win32; using System.Di

Java 设置Excel条件格式

在Excel中,应用条件格式功能可以在很大程度上改进表格的设计和可读性,用户可以指定单个或者多个单元格区域应用一种或者多种条件格式.本篇文章,将通过Java程序示例介绍条件格式的设置方法,设置条件格式时,因不同设置需要,本文分别从以下示例要点来介绍:示例1: 应用条件格式用于高亮重复.唯一数值 应用条件格式用于高亮峰值(最高值.最低值) 应用条件格式用于高亮低于或高于平均值的数值示例2: 应用单元格值类型的条件格式 应用公式类型的条件格式 应用数据条类型的条件格式示例3: 删除条件格式 使用工具