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操作。

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