jxl.read.biff.BiffException: Unable to recognize OLE stream原因及解決方法

合併文件夾下所有.xls文件,用jxl來編寫程序報錯jxl.read.biff.BiffException: Unable to recognize OLE stream

原因有二:
1. jxl包只支持excel03版,文件可能是07版本,可利用宏指令,對所有文件批量修改格式,可參考1:
http://zhidao.baidu.com/link?url=d_lq286waS5fGQt0_NZBPhzaWn5V42ihn_mx0ulEifc6d1o1tMLrSjX3JG5y41uqe6hWmfRA5Bh_l75m5VCKFa.
2. 文件不是標準的excel格式,可通過文件–>另存爲方式查看該文件的保存類型,如果是“單個文件網頁”類型,說明這是一個.html文件,不能使用jxl包操作,也不能使用POI操作。

解決方法:
1.如果是少量文件,可以把文件另存爲excel標準格式,再使用jxl包操作。
2.如果是大量文件,無法通過方法1來解決,這時可對html文件解析。

下面針對方法二進行說明:
1.在文件目錄下,右鍵文件打開方式選擇記事本,看到文件爲html格式,而且文件中出現“=E5=B9=B48=E6=9C=88=E8=87=B3”格式內容,可通過Quated-Printable解碼解決這個問題,參考2(http://www.bkjia.com/Javabc/546185.html).

2.本人項目如果參考2程序,中文輸出依舊亂碼,解決方式把最後返回的字符串改爲:

return new String(buffer.toByteArray());

這樣可輸出正常的中文編碼。

3.對得到的字符串解析,本人採用Jsoup包進行解析,可以得到想要的內容並對excel寫操作,這是可以使用.jxl操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章