用jxl读取excel文件,调用getsheet()时,遇到number类型的单元格时抛出异常

代码如下:
File tmpfile = file;
Workbook rwb = null;
InputStream is = null;
is = new FileInputStream(tmpfile);
rwb = Workbook.getWorkbook(is);
Sheet rs=null;
rs = rwb.getSheet(j);//此处抛出异常

抛出的异常为:
java.lang.IndexOutOfBoundsException: Index: 23, Size: 23
at java.util.ArrayList.RangeCheck(ArrayList.java:507)
at java.util.ArrayList.get(ArrayList.java:324)
at jxl.biff.FormattingRecords.getNumberFormat(FormattingRecords.java:247)
at jxl.read.biff.NumberRecord.<init>(NumberRecord.java:73)
at jxl.read.biff.SheetReader.read(SheetReader.java:503)
at jxl.read.biff.SheetImpl.readSheet(SheetImpl.java:716)
at jxl.read.biff.WorkbookParser.getSheet(WorkbookParser.java:257)
at com.lium.test.readExcel.parseExcel(readExcel.java:62)
at com.lium.test.readExcel.main(readExcel.java:194)

经跟踪调试发现是getsheet()时遇到number类型的单元格就抛出异常了,有遇到过类似问题的吗,急!如能够解决将分值追加到200!
三楼,,只要把文件打开,,什么也不做,只要点击保存,再读取就没有问题了,所以复制到别的excel文件上肯定就没有异常了。现在主要的问题是如何不做其它操作直接就能读取。

第1个回答  2012-02-22
你代码里应该有这样的代码:
String a = (String)list.get(23);
这里list长度应该是22(你可以get(0~22)的值),在去第23个值的时候超出了list 的长度。

相应的这里的rs = rwb.getSheet(j)取值时应该满足:j的值在0~22;23就list越界了。
第2个回答  2009-06-25
j应该是工作表在工作薄中的索引吧.
调试时跟踪一下j的值,注意它有没有初值,及它的值有没有超出Excel的Sheet数.本回答被网友采纳
第3个回答  2018-09-20
楼主,解决了吗,怎么解决的呀,遇到同样的问题,知道原因是excel文件可能有损坏,受保护了,所以不能正确读
第4个回答  2009-06-29
复制到别得excel上试试?
第5个回答  2009-06-26
重新打开
相似回答