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表插入工做簿的開頭。

我的認爲,第三種爲經常使用、簡單的用法。

相關文章
相關標籤/搜索