使用jxl包的importSheet方法抛出空指针异常的解决方法

在使用jxl对Excel进行导入导出时,有时需要将一个Excel中的sheet复制到另外一个Excel中,此时可以使用WritableWorkbook中的importSheet方法。但是在使用该方法后运行时抛出了空指针异常:

java.lang.NullPointerException 
	at jxl.write.biff.SheetCopier.deepCopyCells(SheetCopier.java:996)
	at jxl.write.biff.SheetCopier.importSheet(SheetCopier.java:542)
	at jxl.write.biff.WritableSheetImpl.importSheet(WritableSheetImpl.java:2699)
	at jxl.write.biff.WritableWorkbookImpl.importSheet(WritableWorkbookImpl.java:1897)
在网上搜了一些资料发现,该错误是由于jar包中的一个bug导致的,开发者应该使用&&来判断c.getCellFeatures()和c.getCellFeatures().hasDataValidation(),但是却使用&来进行判断,所以当前者为null时,程序仍然跑去判断第二个条件,所以抛出了空指针异常。源码如下:

if (c.getCellFeatures() != null &  
     c.getCellFeatures().hasDataValidation())  
 {  
   validatedCells.add(c);  
 }  
解决办法:换了2.6.10版本的jar包,这个jar包中不存在该bug,可以正常使用importSheet方法。
在这里分享一下jar包下载链接:http://www.java2s.com/Code/Jar/j/Downloadjxl2610jar.htm


你可能感兴趣的:(excel导入导出)