再使用jxl对多个excel进行复制拷贝的过程中,我们会用到importSheet,copySheet方法。但是执行的时候却总提示jxl.common.AssertionFailed 这个异常,这个异常是sheet中的SheetSettings 属性是null。查询源代码:
SheetSettings
public SheetSettings(SheetSettings copy, Sheet s){
Assert.verify(copy != null); //问题就出现在这。
this.sheet = s; 。。。。。
当我们拷贝的过程是先读取excel然后读取其内的所有sheet页。然后将这个sheet页放到importSheet方法中。
wb = Workbook.getWorkbook(new File("4252.xls"));
wwb = Workbook.createWorkbook(new File(be.getFilePath()));
Sheet [] sheets = wb.getSheets();
for (int j = 0; j < sheets.length; j++) {
Sheet sheet = sheets[j];
wwb.importSheet(sheetName, wwb.getSheets().length, sheet);
}
但是这时却抛出AssertionFailed 异常。
经过查询代码发现读取的方法有点意思
public Sheet[] getSheets()
{
Sheet[] sheetArray = new Sheet[getNumberOfSheets()];
return (Sheet[])this.sheets.toArray(sheetArray);
}
这个方法只是读取了一共有多少个sheet页,然后创建一个数组。
这个类似于hibernate的lazy。所以我在前面调用了下当前sheet的一个属性。
果然是这样,问题解决了。