zoukankan      html  css  js  c++  java
  • 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/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();

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

    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

  • 相关阅读:
    H5页面尺寸兼容rem
    Mysql索引、explain执行计划
    mysql物理结构
    mysql 架构
    excel 写
    好的开源项目
    批量插入大量数据
    文件下载回显
    shardingsphere 实现 springboot集成 多数据源
    前后端代码特殊符号乱码问题
  • 原文地址:https://www.cnblogs.com/scw2901/p/4378424.html
Copyright © 2011-2022 走看看