天天看點

Java中運用JXL讀取Excel中資料

在做自動化測試過程中,我們經常需要從EXcel表中讀取資料, 後續程式中還需要利用該資料作為參數輸入等。

我們可以抽象一個從excel表中讀取資料的類,代碼如下:(注意在寫這個代碼之前一定要保證JXL.jar環境已經配置好。)

package priv.common;
   import java.io.FileInputStream;
   import java.io.FileNotFoundException;
   import java.io.IOException;
   import java.io.InputStream;
   import jxl.Cell;
  import jxl.CellType;
  import jxl.Sheet;
  import jxl.Workbook;
  import jxl.read.biff.BiffException;

 public class excelReadData {
//申明一個讀取資料的方法,并且有傳回值
	public String[][] f_readexcel(String filePath, String sheetname) {
		// 輸入流,聲明讀取變量is 使用者讀取excel表格
		InputStream is = null;
		// 建構Workbook對象
		Workbook workbook = null;
		// 傳入filepath中描述的路徑,執行個體化is。
		try {
			is = new FileInputStream(filePath);
		} catch (FileNotFoundException e) {

		}
		// 将is中讀取到的excel表格指派給workbook
		try {
			workbook = Workbook.getWorkbook(is);
		} catch (BiffException | IOException e) {

		}
		// 聲明變量sheet,将workbook中的sheet名為sheetname的表格讀取到sheet中
		Sheet sheet = workbook.getSheet(sheetname);
		// 聲明一個數組,用于存放sheet中的值,長度根據sheet中的實際長度定義
		String cases[][] = new String[sheet.getRows()][sheet.getColumns()];
		int i;
		int j;
		// 通過兩層循環,将sheet中的資料讀取到數組中
		// 遍數組的曆行
		for (i = 0; i < sheet.getRows(); i++) {
			// 遍數組的曆列
			for (j = 0; j < sheet.getColumns(); j++) {
				// 聲明一個單元格變量,通過getCell(j,i)得到單元格中的值,讀取每列每行,getCell(j,i)前面的j是列,i是行
				Cell cellA1 = sheet.getCell(j, i);
				// 如果目前單元格的格式是label(文本類型)類型的,就讀取到數組中,需要保證excel表中數字類型的單元格手動調整成文本類型
				if (cellA1.getType().equals(CellType.LABEL)) {
					// 擷取string類型單元格的資料
					cases[i][j] = cellA1.getContents();
				}
				else if(cellA1.getType().equals(CellType.NUMBER)) {
					cases[i][j] = String.valueOf(cellA1.getContents());
				}
			}
		}
		// 将excel表關閉
		workbook.close();
		// 将輸入流關閉
		try {
			is.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		// 傳回已經讀取到sheet資料的數組
		return cases;
	}
}