JAVA读取EXCEL文件异常Unable to recognize OLE stream

用JXL读取*.xls格式的文件,碰到一个问题,抛出下面的异常:
jxl.read.biff.BiffException: Unable to recognize OLE stream
at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)
at jxl.read.biff.File.<init>(File.java:127)
at jxl.Workbook.getWorkbook(Workbook.java:221)
at jxl.Workbook.getWorkbook(Workbook.java:198)
at Excel.TestExcel.main(TestExcel.java:17)

折腾了一阵发现读取的*.xls文件,用记事本可以打开后,为HTML格式。然后让把文件“另存为”就可以读取了,另存为1.xls文件后,新文件用记事本打开后就是二进制的格式了。
不知道什么原因,怀疑为EXCEL版本问题?让客户“另存为”操作,客户不满意,从网上找了一阵资料也没结果,又哪位大虾解决过这歌问题,麻烦看下,感谢感谢!
程序没错,请看清楚了:文件另存为新文件,读新文件可以读出数据。关键问题是新旧文件的格式问题

首先你这个Excel文件是从哪里来的,很可能是从一个页面上下载来的,而这个页面做的功能就是导出Excel,但做偷懒了,没有用jxl和POI等库,而是用直接用jsp生成html写的。

因此你上传时就要要判断了,如果是真的excel就要用jxl或POI解析,如果只是html,就要用HTML的解析方法了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-21
解决方法:用EXCEL建立建立的文件不会出现这个问题了。
原因:你手工建立一个文件,并给它命名,给它后缀名,电脑可以识别是因为你的电脑装了OFFICE
里面的EXCEL。
但是在JAVA程序中并不知道你是EXCEL文件,所以被认为不能识别的。如果你的电脑没装EXCEL你再建立个文件再改名为exce的后缀名的话,你的电脑也不会识别是什么文件的。。你打开绝对是乱码。
第2个回答  2008-07-31
你的机器没安装 Java 插件吧`````~他这个文件里面有java 命令
第3个回答  2008-07-31
文件没加后缀名?
流写的有问题?
根据错误,看看哪出错了!
好像是流选择错了!可以贴下代码吗?
相似回答