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

当用jxl包操作excel文件的时候,在拷贝大批量的单元格的时候会发生错误,信息如下:         

1   java.lang.ArrayIndexOutOfBoundsException:   441   
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 2007-04-29 14:16 reeve 阅读(11864) 评论(9)  编辑  收藏

评论

# re: jxl操作java.lang.ArrayIndexOutOfBoundsException: 441 错误的解决 [未登录] 2007-04-29 20:14 Robin

不错,实践才是最好的老师。  回复  更多评论   

# re: jxl操作java.lang.ArrayIndexOutOfBoundsException: 441 错误的解决 2007-04-30 17:02 BeanSoft

不要迷信框架, 人写的代码都会有 bug 的.  回复  更多评论   

# re: jxl操作java.lang.ArrayIndexOutOfBoundsException: 441 错误的解决 2007-06-08 09:32 EricaseJang

我这儿老是报这个错误:
java.lang.ArrayIndexOutOfBoundsException: 15

而且是有时候出现,有时候不出现,不知道什么原因  回复  更多评论   

# re: jxl操作java.lang.ArrayIndexOutOfBoundsException: 441 错误的解决 [未登录] 2007-07-11 20:47 reeve

XD,你得把你的代码贴出来才知道是什么地方出的错啊,数组越界的错误不一定是jxl中的错误哦  回复  更多评论   

# re: jxl操作java.lang.ArrayIndexOutOfBoundsException: 441 错误的解决 2007-07-20 11:34 limeng

哥们,您好,麻烦你帮我发一个JXL的源代码好吗?网上确实没有找到,谢谢了
MSN:limengpig2008@hotmail.com  回复  更多评论   

# re: jxl操作java.lang.ArrayIndexOutOfBoundsException: 441 错误的解决 [未登录] 2008-12-04 16:29 YANG

楼主你错了
一个Sheet里面的format数量是有限制的
实例化format的时候在循环外面做,不然就会超出那个限制
大部分框架遇到的问题还是使用者水者导致的
  回复  更多评论   

# re: jxl操作java.lang.ArrayIndexOutOfBoundsException: 441 错误的解决 [未登录] 2009-01-14 10:03 fox

楼上的,我是将format放在循环外面的,这个我想应该大家都知道,通用的东西实例化一次就可以了。
在book1.write();的时候报错。而且这个错误是第一次点导出时不报错,导出后再点导出,就报这个错误了。  回复  更多评论   

# re: jxl操作java.lang.ArrayIndexOutOfBoundsException: 441 错误的解决 2010-03-07 19:25 eppen

0x1B9 441?  回复  更多评论   

# re: jxl操作java.lang.ArrayIndexOutOfBoundsException: 441 错误的解决 2013-01-11 17:20 郑志明

刚才是你给我发的邮箱里的代码吗?我看不懂啊?  回复  更多评论   


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


网站导航:
 

导航

<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

统计

常用链接

留言簿(2)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜