最近一個web工程需要完成一個小功能,利用文件上傳然後讀取文件內容寫入到資料庫,這裡是操作的excel文件,excel文件分兩種尾碼,03版本的xls和之後的xlsx,現在大家一般都拿非常好用的插件直接過來用就可以了,我這裡用的是java poi相關資源包。 1,首先要能夠讀取帶xlsx的excel ...
最近一個web工程需要完成一個小功能,利用文件上傳然後讀取文件內容寫入到資料庫,這裡是操作的excel文件,excel文件分兩種尾碼,03版本的xls和之後的xlsx,現在大家一般都拿非常好用的插件直接過來用就可以了,我這裡用的是java poi相關資源包。
1,首先要能夠讀取帶xlsx的excel文件,必須要導入如下的jar包
然後遇到的問題是在本地工程下建立的一個測試類測試沒有異常,兩種excel的文件都能讀取,但是一旦發佈到web工程下,我的工程是在tomcat下跑的。這裡就出現了問題,總是報這個異常:
Exception in thread "main" org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)
然後隨著異常仔細的往上看,最後發現說有一個xbean.jar是否是正確的版本,這個時候我就知道可能是jar包衝突了,但是這時候對web工程的結構有點不是很明確了,為什麼在測試類下沒有問題,但為啥在web下跑的時候會產生這個異常呢,究其原因,這裡要弄明白,在web下跑的時候,在webRoot下下麵的WEB-INF下麵的lib放的jar才是工程跑的時候用用到的jar,所以這時候我去找,果然發現有一個xbean.jar跟java poi的xmlbeans-2.3.0.jar衝突了,果斷刪掉低版本的xbean.jar,問題解決。
所以從遇到這個問題上來看,首先要學會從異常中找原因,其次知道原因了之後如何去解決。異常往往能夠暴露出能夠解決問題的關鍵所在。希望能幫到遇到此類似問題的朋友。