JXL copySheet 的一个BUG_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > JXL copySheet 的一个BUG

JXL copySheet 的一个BUG

 2012/7/9 21:25:18  shhyuhan  程序员俱乐部  我要评论(0)
  • 摘要:这两天在用JXL做EXCEL导出,copySheet时总是会出现以下异常java.lang.NullPointerExceptionatjxl.write.biff.WritableSheetCopier.shallowCopyCells(WritableSheetCopier.java:499)[jxl.jar:na]atjxl.write.biff.WritableSheetCopier.copySheet(WritableSheetCopier.java:239)[jxl.jar
  • 标签:一个

这两天在用JXL做EXCEL导出,copySheet时总是会出现以下异常

?

java.lang.NullPointerException
        at jxl.write.biff.WritableSheetCopier.shallowCopyCells(WritableSheetCopier.java:499) [jxl.ja
r:na]
        at jxl.write.biff.WritableSheetCopier.copySheet(WritableSheetCopier.java:239) [jxl.jar:na]
        at jxl.write.biff.WritableSheetImpl.copy(WritableSheetImpl.java:1622) [jxl.jar:na]
        at jxl.write.biff.WritableWorkbookImpl.copySheet(WritableWorkbookImpl.java:987) [jxl.jar:na]

?

今天调试了一下,发现在jxl.write.biff.WritableSheetCopier.shallowCopyCells方法中有如下代码

?

if (c.getCellFeatures() != null & c.getCellFeatures().hasDataValidation())
{
    validatedCells.add(c);
}

?

细心的人都不难发现,代码中少写了一个&符,虽然也可以用来表示“且”的逻辑,但一个&符是没有用到短路算法的,这样就会导致不管&前面表达式的结果是true还是flase,&符后面的表达式都会执行。在这段代码中,在c.getCellFeatures()是null 的情况下,c.getCellFeatures().hasDataValidation()必然会报java.lang.NullPointerException异常。

想不到有么有名的jxl也会犯这么低级的错误

?

发表评论
用户名: 匿名