随笔-112  评论-73  文章-0  trackbacks-0

jxl操作java.lang.ArrayIndexOutOfBoundsException: 441 错误的解决

转自网上(http://www.blogjava.net/reeve/archive/2007/04/29/114564.html)

2
   jxl.biff.IndexMapping.getNewIndex(IndexMapping.java:68)   
3   jxl.biff.FormattingRecords.rationalize(FormattingRecords.java:372)   
4   jxl.write.biff.WritableWorkbookImpl.rationalize(WritableWorkbookImpl.java:727)   
5   jxl.write.biff.WritableWorkbookImpl.write(WritableWorkbookImpl.java:489)   


这个错误曾花了我不少时间,为了避免这个错误,我曾试过把一个excel报表中的纪录拆分成好几部分分别进行处理,效率可想,非常的慢,非 常的烦人,后来,偶尔在网上看到有人建议看看它的源代码,也许能更好的理解它,死当活马医,下了源代码,为了能够更清楚地调试和跟踪,我把jxl中的 src下的源程序直接导到了工程里进行调试,结果发现这个错误是在jxl.biff下的formatting records.java这个类中出的问题,它定义了一个变量private static final int maxFormatRecordsIndex = 0x1b9;即最大纪录格式数目为441,因此每当拷贝的单元格超过这个变量值的时候就会报错,解决的方法就是把这个0x1b9换成一个大点的值,即可, 我换成了7200基本满足了需要,没有再报这个错,而且以往复制单元格,单元格格式丢失的情况也没有再出现,问题完全解决!

教训:对于现成的东西,已经做好的东西,要敢于去研究,去质疑,尤其是开源的东西,因为都是为了个人的使用,其中难免有些东西,对于我们自己的项目 来说不太合适,找到它的源代码,大概一跟踪,基本上问题就能解决,以前的时候,总是感觉自己的水平菜,总认为别人的东西都是对的,结果导致问题一直拖到现 在,亲自动手实践,永远是最好的方法!


posted on 2009-03-19 11:24 Libo 阅读(1315) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: