使用从Excel工作表

时间:2018-02-20 12:28:35

标签: java selenium

我提供了以下代码,其中从Excel工作表中获取数据,然后将此数据添加到列表中,如下所示:

  List<HashMap<String,String>> mydata = new ArrayList<>();
  try 
  {
     FileInputStream fs = new FileInputStream(filepath);
     XSSFWorkbook workbook = new XSSFWorkbook(fs);
     XSSFSheet sheet = workbook.getSheet(sheetName);
     Row HeaderRow = sheet.getRow(0);
     for(int i=1;i<sheet.getPhysicalNumberOfRows();i++)
     {
        Row currentRow = sheet.getRow(i);
        HashMap<String,String> currentHash = new HashMap<String,String>();
        for(int j=0;j<currentRow.getPhysicalNumberOfCells();j++)
        {
           Cell currentCell = currentRow.getCell(j);
           switch (currentCell.getCellType())
           {
           case Cell.CELL_TYPE_STRING:        
           currentHash.put(HeaderRow.getCell(j).getStringCellValue(), currentCell.getStringCellValue());
              break;                                  
           }
        }
        mydata.add(currentHash);

我正在使用另一个类使用Properties类并设置属性:

 public List<HashMap<String,String>> datamap;
 public static Properties prop;
public void read_Data_FromExcel(String arg1) throws Throwable {
     datamap = DataHelper.data("C:/FINALORDER/ORDERING_Tools/ordering-tools/src/test/resources/Test451.xlsx","Sheet1");
        prop=new Properties();
          int index = Integer.parseInt(arg1)-2;
          FileInputStream fs = new FileInputStream("C:\\FINALORDER\\ORDERING_Tools\\ordering-tools\\src\\test\\resources\\Test451.xlsx");
             XSSFWorkbook workbook = new XSSFWorkbook(fs);
             XSSFSheet sheet = workbook.getSheet("Sheet1");
             Row HeaderRow = sheet.getRow(0);
             for(int i=0;i<HeaderRow.getPhysicalNumberOfCells();i++) {
            prop.setProperty(HeaderRow.getCell(i).toString(), datamap.get(index).get(HeaderRow.getCell(i).toString()));

使用上面的代码我从excel中获取数据,然后将这些数据输入屏幕中的字段,如下所示:

  try {
    String remark=ExcelSteps.prop.getProperty("Remark");
    mosdpOrderSummaryEditPage.tbx_remarks.type(remark);
    }catch(Exception e) {
    }

问题是,如果有许多字段,如备注,名称,地址,ID,那么我必须使用上面的代码逐一获取它们作为备注,这是一种冗余的工作和不必要的增加代码,有没有办法通过它我可以减少代码或制作任何通用方法。

1 个答案:

答案 0 :(得分:0)

您可以创建单独的列并通过

获取这些列
ExcelSteps.prop.getProperty("Here you should pass the column data");

通过此代码将自动动态获取备注,名称,地址,id字段名称。 :)