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

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

例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();
	}

运行结果:

运行结果

由结果可以看出,新创建的工作表会变成第一页,而之前创建的工作表并未被覆盖,而是向后移变成了第二页。

例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();
	}

运行结果:

sheet02

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

例3

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

	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();
	}

运行结果:

运行结果

由结果可得,首次创建的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。

综上,createSheet()方法的int参数与实际编号的关系,不妨可以这样概括:

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

个人认为,第三种为常用、简单的用法。

转载于:https://my.oschina.net/zhangyujian/blog/2231350

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值