博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java处理excel-xlsx格式大文件的解决方案
阅读量:4563 次
发布时间:2019-06-08

本文共 1626 字,大约阅读时间需要 5 分钟。

 

  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/624969 excel2007文件格式与之前版本不同,之前版本采用的是微软自己的存储格式。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();

 

 

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

 经测试7M左右文件没有问题  

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

   经测试36M左右文件没有问题,需按照上面所述稍作修改。

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

  xerces引起此错误的正确原因描述

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

   不使用xerces.jar的解决办法

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

转载于:https://www.cnblogs.com/scw2901/p/4378424.html

你可能感兴趣的文章
Celery框架
查看>>
[c#]asp.net开发微信公众平台(4)关注事件、用户记录、回复文本消息
查看>>
[转载,感觉写的非常详细]DUBBO配置方式详解
查看>>
linux Valgrind使用说明-内存泄漏
查看>>
Android在Eclipse上的环境配置
查看>>
面向对象(五)
查看>>
android平台下使用点九PNG技术
查看>>
Python学习3,列表
查看>>
最长回文子串
查看>>
JAVA基础-JDBC(一)
查看>>
js中for和while运行速度比较
查看>>
简单理解什么是递归(阶乘演示)
查看>>
http协议
查看>>
js倒计时,页面刷新时,不会从头计时
查看>>
洛谷1156垃圾陷阱
查看>>
python ==》 递归
查看>>
简单网络请求封装
查看>>
django —— MVT模型
查看>>
oracle 静默安装
查看>>
Python3基础(2)模块、数据类型及运算、进制、列表、元组、字符串操作、字典...
查看>>