testng使用excel進行資料驅動程式碼參照
阿新 • • 發佈:2018-12-27
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelRead {
public static Object[][] getSearchData(String filePath,String FileName,String sheetName) throws IOException{
//根據引數傳入的資料檔案路徑和檔名稱,組合出Excel資料檔案的絕對路徑,宣告一個File檔案物件
File file = new File(filePath + "\\" + FileName);
//建立FileInputStream物件用於讀取Excel檔案
FileInputStream inputStream = new FileInputStream(file);
Workbook Workbook = null;
//獲取檔名引數的副檔名,判斷是.xlsx檔案還是.xls檔案
String fileExtensionName = FileName.substring(FileName
.indexOf("."));
if (fileExtensionName.equals(".xlsx")) {
Workbook = new XSSFWorkbook(inputStream);
//Workbook.close();
} else if (fileExtensionName.equals(".xls")) {
Workbook = new HSSFWorkbook(inputStream);
//Workbook.close();
}
//通過sheetName引數,聲稱Sheet物件
Sheet Sheet = Workbook.getSheet(sheetName);
//獲取Excel資料檔案Sheet1中資料的行數,getLastRowNum()方法獲取資料的最後一行行號
//getFirstRowNum()方法獲取資料的第一行行號,相減之後得出資料的行數,Excel檔案的行號和列號都是從0開始
int rowCount = Sheet.getLastRowNum() - Sheet.getFirstRowNum();
//建立list物件儲存從Excel資料檔案讀取的資料
List<Object[]> records = new ArrayList<Object[]>();
//迴圈遍歷Excel資料檔案的所有資料,除了第一行,第一行是資料列名稱
for (int i = 1; i < rowCount + 1; i++) {
//使用getShow方法獲取行物件
Row row = Sheet.getRow(i);
//宣告一個數組,儲存Excel資料檔案每行中的資料,陣列的大小用getLastCellNum()方法進行動態宣告,實現測試資料個數和陣列大小一致
String fields[] = new String[row.getLastCellNum()];
for (int j = 0; j < row.getLastCellNum(); j++) {
//使用getCell()和getStringCellValue()方法獲取Excel檔案中的單元格資料
row.getCell(j).setCellType(Cell.CELL_TYPE_STRING);
fields[j] =row.getCell(j).getStringCellValue();
}
//將fields的資料物件存入records的list中
records.add(fields);
}
// 將儲存測試資料的List轉換為一個Object的二維陣列
Object[][] results = new Object[records.size()][];
// 設定二位陣列每行的值,每行是一個Object物件
for (int i = 0; i < records.size(); i++) {
results[i] = records.get(i);
}
return results;
}
}