1. 程式人生 > >POI做office2007資料匯出報異常AbstractMethodError: org.apache.xerces.dom.DocumentImpl.getXmlStandalone()Z

POI做office2007資料匯出報異常AbstractMethodError: org.apache.xerces.dom.DocumentImpl.getXmlStandalone()Z

一.問題說明

   在做poi匯出為xlsx檔案時,工具類丟擲異常。異常如下:

java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.getXmlStandalone()Z  
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.setDocumentInfo(Unknown Source)  
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)  
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)  
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(Unknown Source)  
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)  
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)  

     在搜遍全網進行jar包衝突問題後,問題依然不得解決。尤其是說xercesImpl.jar和xml-apis.jar這兩個jar包的版本問題的,我改完了所有版本後問題依然存在,並沒有什麼卵用(兩行老淚)。 因為異常定位到和xml相關上,所以自己的注意點一直在這。

二.問題解決

      然後我開始求助別人,在朋友的提示下開始在poi的版本上研究。然後開始從最新版本實驗。最後發現以下版本是可以使用的


			<dependency>
				<groupId>org.apache.poi</groupId>
				<artifactId>poi-scratchpad</artifactId>
				<version>3.9</version>
			</dependency>
			<dependency>
				<groupId>org.apache.poi</groupId>
				<artifactId>poi-ooxml</artifactId>
				<version>3.9</version>
			</dependency>
			<dependency>
				<groupId>org.apache.poi</groupId>
				<artifactId>poi-ooxml-schemas</artifactId>
				<version>3.9</version>
			</dependency>
			<dependency>
				<groupId>org.apache.poi</groupId>
				<artifactId>poi-excelant</artifactId>
				<version>3.9</version>
			</dependency>

 然後系統開始匯出的是一個zip檔案,雖然還是不行但是總算有了希望。這裡我要說的是其實office2007版本的excel其實就是一個zip檔案,然後我改了字尾就好了。出現這種問題多半是檔名和字尾設定的問題,自己注意改程式碼就好。

      還有一個坑的地方想說下,就是3.9版本在網上的maven倉庫上搜索的時候居然是沒有的,還是我試出來的(吐血)。寫這篇部落格是希望遇到類似問題的同行們能夠快速解決問題。