1. 程式人生 > >testng使用excel進行資料驅動程式碼參照

testng使用excel進行資料驅動程式碼參照



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檔案中的單元格資料
            
//設定Cell的型別,將CELL設定為String型別,取出表中的數值型資料
             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;  
      
  }  

}