jxl中createSheet()方法int参数(sheet编号)的使用注意事项

jxl.jar包中createSheet()方法中String类型的参数表明新建工做表的名称,int参数表示新建工做表的编号。java

例1

当新建的2个sheet编号相同时会发生什么状况?新的工做表会覆盖旧的工做表吗?实践出真知:数组

public static void main(String args[]) throws BiffException, IOException, WriteException{
		System.out.println("zhangyujian");
		//建立文件
		File xlsFile= new File("vita.xls");
		//建立工做簿
		WritableWorkbook workbook = Workbook.createWorkbook(xlsFile);
		//建立工做表
		//WritableSheet sheet = workbook.createSheet("sheet00", 0);
		workbook.createSheet("sheet00", 0);
		workbook.createSheet("sheet01", 0);
		workbook.createSheet("sheet02", 0);
		//关闭工做簿
		workbook.close();
	}

运行结果:code

运行结果

由结果能够看出,新建立的工做表会变成第一页,而以前建立的工做表并未被覆盖,而是向后移变成了第二页。blog

例2

当是用不连续的编号建立工做表时,会发生什么状况?排序

public static void main(String args[]) throws BiffException, IOException, WriteException{
		System.out.println("zhangyujian");
		//建立文件
		File xlsFile= new File("vita.xls");
		//建立工做簿
		WritableWorkbook workbook = Workbook.createWorkbook(xlsFile);
		//建立工做表
		//WritableSheet sheet = workbook.createSheet("sheet00", 0);
		workbook.createSheet("sheet00", 0);
		workbook.createSheet("sheet01", 1);
		workbook.createSheet("sheet02", 3);
		//关闭工做簿
		workbook.close();
	}

运行结果:get

sheet02

由结果看出,编号为3的工做表,并非第4页,而是第3页。且此时若是调用方法getSheet(3)时将会报数组越界的错误。Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3it

例3

综合的例子来判断一下排序的逻辑:io

public static void main(String args[]) throws BiffException, IOException, WriteException{
		System.out.println("zhangyujian");
		//建立文件
		File xlsFile= new File("vita.xls");
		//建立工做簿
		WritableWorkbook workbook = Workbook.createWorkbook(xlsFile);
		//建立工做表
		//WritableSheet sheet = workbook.createSheet("sheet00", 0);
		workbook.createSheet("sheet04", 4);
		workbook.createSheet("sheet03", 3);
		workbook.createSheet("sheet02", 2);
		workbook.createSheet("sheet01", 1);
		workbook.createSheet("sheet00", 0);
		//关闭工做簿
		workbook.close();
	}

运行结果:table

运行结果

由结果可得,首次建立的sheet04虽然编号为4,可是工做簿中不存在其余页,因此它是第一页,此时编号实际为0;建立sheet03时,虽然标号为3,可是此时工做簿中仅有一张表,根据例2,因此它顺延后实践编号为1,在工做簿的第二页;建立sheet02时,编号为2,此时的工做簿中已经有0、1编号,因此编号为2的sheet02刚好放置在工做簿的第3页,也就是此时的最后一页;建立sheet01时,编号为1,根据例1,它会插入的标号为1的位置,此时顺序为sheet04 sheet01 sheet03 sheet02;建立最后一张表sheet0,编号为0,即将其插入到编号为0的位置,第一页。因此最后的排序是sheet00 sheet04 sheet01 sheet03 sheet02。class

综上,createSheet()方法的int参数与实际编号的关系,不妨能够这样归纳:

  • 当目标编号≥当前工做簿sheet的最大编号,则在其后追加新的sheet表。
  • 当目标编号<当前工做簿sheet的最大编号,则在对应位置插入新的sheet表。
  • 当目标编号=0时,表示始终将新的sheet表插入工做簿的开头。

我的认为,第三种为经常使用、简单的用法。

相关文章
相关标签/搜索