用jxl读取excel文件,调用getsheet()时,遇到number类型的单元格时抛出异常 100
代码如下:Filetmpfile=file;Workbookrwb=null;InputStreamis=null;is=newFileInputStream(tmpfi...
代码如下:
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文件上肯定就没有异常了。现在主要的问题是如何不做其它操作直接就能读取。 展开
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文件上肯定就没有异常了。现在主要的问题是如何不做其它操作直接就能读取。 展开
5个回答
展开全部
你代码里应该有这样的代码:
String a = (String)list.get(23);
这里list长度应该是22(你可以get(0~22)的值),在去第23个值的时候超出了list 的长度。
相应的这里的rs = rwb.getSheet(j)取值时应该满足:j的值在0~22;23就list越界了。
String a = (String)list.get(23);
这里list长度应该是22(你可以get(0~22)的值),在去第23个值的时候超出了list 的长度。
相应的这里的rs = rwb.getSheet(j)取值时应该满足:j的值在0~22;23就list越界了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
j应该是工作表在工作薄中的索引吧.
调试时跟踪一下j的值,注意它有没有初值,及它的值有没有超出Excel的Sheet数.
调试时跟踪一下j的值,注意它有没有初值,及它的值有没有超出Excel的Sheet数.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-09-20
展开全部
楼主,解决了吗,怎么解决的呀,遇到同样的问题,知道原因是excel文件可能有损坏,受保护了,所以不能正确读
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-06-29
展开全部
复制到别得excel上试试?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询