博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jxl中createSheet()方法int参数(sheet编号)的使用注意事项
阅读量:7063 次
发布时间:2019-06-28

本文共 2371 字,大约阅读时间需要 7 分钟。

hot3.png

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

你可能感兴趣的文章
学习小记
查看>>
源代码分享网站
查看>>
Codeforces Round #556 (Div. 2) C. Prefix Sum Primes
查看>>
Ubuntu亮度无法调节或调节无法保存的问题
查看>>
mysql语句优化总结(一)
查看>>
嵌入式开发应该掌握的一些Linux命令
查看>>
MySQL的查询,子查询,联结查询,联合查询
查看>>
跨浏览器注册事件和移除事件方案
查看>>
Android-Activity的切换效果
查看>>
[USACO 1.2.1]挤牛奶 (快排)
查看>>
信息系统规划(Information System Planning, ISP)
查看>>
xubuntu sublime 输入中文
查看>>
BICEP单元测试计划——四则运算Ⅱ
查看>>
金融的本质是什么?终于有人讲清楚了!(源于网络)
查看>>
Oracle 数据库名、实例名、Oracle_SID
查看>>
MySQL5.7在Windows下的安装
查看>>
Android 几个Info系列类的总结
查看>>
1010 Robot Motion
查看>>
修改CKFinder上传路径
查看>>
SQL server中的parsename详解
查看>>