如何仅使用列名从Excel中获取列值?

时间:2018-07-30 06:35:57

标签: java selenium

我想从Excel工作表中读取一组用户名和密码。我的用户名显示在第一列中,而我的密码值显示在第八列中。我不想通过提供第8列地址来读取第8列的值。相反,无论我将其放在Excel工作表中的任何位置,我都想读取密码值。有什么办法吗?

  

FileInputStream fs =新的FileInputStream(strReadFile);
        工作簿wb = Workbook.getWorkbook(fs);
        表格sh = wb.getSheet(“ Sheet1”);
        int rowCount = sh.getRows();
        System.out.println(“行数:” +行数);

  for(int row=1;row<rowCount;row++) {
      String Username = sh.getCell(1,row).getContents();
      driver.findElement(By.id("user_name")).sendKeys(Username);


      String Password = sh.getCell(2,row).getContents();
      driver.findElement(By.id("user_pass")).sendKeys(Password);          
      driver.findElement(By.id("login_button")).click(); 
   }

1 个答案:

答案 0 :(得分:1)

根据我的理解,没有内置方法。请在下面的方法栏中查看您的解决方案。

    for(int row=1;row<rowCount;row++) {
      String Username = sh.getCell(column("username column",sh),row).getContents();
      driver.findElement(By.id("user_name")).sendKeys(Username);


      String Password = sh.getCell(column("password column",sh),row).getContents();
      driver.findElement(By.id("user_pass")).sendKeys(Password);          
      driver.findElement(By.id("login_button")).click(); 
   }


public int column(String columnName, Sheet sheetAt) throws Exception{
    Row row = sheetAt.getRow(0);

    int col = -1;
    for (int i=0; i<row.getLastCellNum(); i++) {
        Cell cell = row.getCell(i);
        if (cell == null || cell.getCellType() == Cell.CELL_TYPE_BLANK) {
            continue;
        }
        if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
            String text = cell.getStringCellValue();
            if (columnName.equals(text)) {
                col = i;
                break;
            }
        }
    }
    if (col == -1) {
        throw new Exception("None of the cells in the first row were Patch");
    }

    return col;
}