本文主要是介绍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操作。
这篇关于jxl.read.biff.BiffException: Unable to recognize OLE stream原因及解决方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!