在做自動化測試過程中,我們經常需要從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;
}
}