java處理excel-xlsx格式大檔案的解決方案

來源:互聯網
上載者:User

標籤:

 

  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

java處理excel-xlsx格式大檔案的解決方案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.