2015-06-27 1 views
0

Pls поможет мне с кодом для чтения данных из нескольких листов одного и того же файла excel с использованием кода Selenium и Java. Пожалуйста, найдите ниже код, который я пытался. Он считывает данные из последнего листа всегда. Но мне нужно прочитать данные с листа 0 на лист n.Чтение данных из нескольких листов одной и той же книги Selenium

public class HybridExecuteTest { 
    WebDriver webdriver = null; 
    @Test(dataProvider="hybridData") 
    public void testLogin(String testcaseName,String keyword,String objectName,String objectType,String value) 
     throws Exception { 
      if(testcaseName!=null&&testcaseName.length()!=0){ 
    webdriver=new FirefoxDriver(); 
    webdriver.manage().window().maximize(); 
      } 
    ReadObject object = new ReadObject(); 
    Properties allObjects = object.getObjectRepository(); 
    UIOperation operation = new UIOperation(webdriver); 
    //Call perform function to perform operation on UI 
    operation.perform(allObjects,keyword,objectName,objectType,value); 
      } 
    @SuppressWarnings("null") 
    @DataProvider(name="hybridData") 
    public Object[][] get() throws IOException 
    { 
    Object[][] object = null; 
    String filePath = System.getProperty("user.dir")+"\\"; 
    System.out.println("File Path is:" + filePath); 
    String fileName = "TestCaseRep.xls"; 
    //Create a object of File class to open xlsx file 
    File file = new File(filePath+"\\"+fileName); 
    //Create an object of FileInputStream class to read excel file 
    FileInputStream inputStream = new FileInputStream(file); 
    int totalSheet = 0; 
    Sheet Sheet1=null; 
    Workbook Workbookone = null; 
    //Find the file extension by spliting file name in substing and getting only extension name 
    String fileExtensionName = fileName.substring(fileName.indexOf(".")); 
    //Check condition if the file is xlsx file 
    if(fileExtensionName.equals(".xlsx")){ 
    //If it is xlsx file then create object of XSSFWorkbook class 
     Workbookone = new XSSFWorkbook(inputStream); 
    } 
    //Check condition if the file is xls file 
    else if(fileExtensionName.equals(".xls")){ 
     //If it is xls file then create object of XSSFWorkbook class 
     Workbookone = new HSSFWorkbook(inputStream); 
    } 
    //Read sheet inside the workbook by its name 
    totalSheet = Workbookone.getNumberOfSheets(); 
    if(totalSheet > 0) { 
     System.out.println("Total Sheet Found:" + totalSheet); 
     for(int k=0;k<totalSheet ;k++) { 
      System.out.println("Sheet Name:" + Workbookone.getSheetName(k)); 
      Sheet1 = Workbookone.getSheetAt(k); 
      System.out.println("Sheet Found:" + Sheet1); 
     //Find number of rows in excel file 
    int rowCount = Sheet1.getLastRowNum()-Sheet1.getFirstRowNum(); 
    object = new Object[rowCount][5]; 
    for (int i = 0; i < rowCount; i++) { 
     //Loop over all the rows 
     Row row = Sheet1.getRow(i+1); 
     //Create a loop to print cell values in a row 
     for (int j = 0; j < row.getLastCellNum(); j++) { 
      //Print excel data in console 
      object[i][j] = row.getCell(j).toString(); 
      System.out.println(object[i][j]); 
     } 
    } 
    System.out.println(""); 
} 
} 
    return object; 
    } 
} 
+0

Вам необходимо показать свой код, который вы пробовали, чтобы получить справку. – SteveFerg

+0

Я дал код выше. Помогите мне .. –

+0

Вы уверены, что 'System.out.println (« Имя листа: »+ Workbookone.getSheetName (k));' печатает правильные значения – Madhan

ответ

0

Проблема заключается вы переинициализации object в Название переменной для цикла, поэтому вы получаете значения последнего листа.
Поскольку это двухмерный массив, вы можете хранить только две строки значений и столбцы.

Если вы хотите сохранить листы, вам нужно пойти на трехмерный массив. Но я предлагаю вам пойти на Список. Таким образом, я изменил тип возвращаемого из Object[][] в ArrayList<Object[][]> так, что лист Данные будут добавлены к списку

public ArrayList<Object[][]> get() throws IOException { 
     ArrayList<Object[][]> sheetDatas=new ArrayList<>(); 
     Object[][] object = null; 
     String filePath = System.getProperty("user.dir") + "\\"; 
     System.out.println("File Path is:" + filePath); 
     String fileName = "TestCaseRep.xls"; 
     //Create a object of File class to open xlsx file 
     File file = new File(filePath + "\\" + fileName); 
     //Create an object of FileInputStream class to read excel file 
     FileInputStream inputStream = new FileInputStream(file); 
     int totalSheet = 0; 
     Sheet Sheet1 = null; 
     Workbook Workbookone = null; 
     //Find the file extension by spliting file name in substing and getting only extension name 
     String fileExtensionName = fileName.substring(fileName.indexOf(".")); 
     //Check condition if the file is xlsx file 
     if (fileExtensionName.equals(".xlsx")) { 
      //If it is xlsx file then create object of XSSFWorkbook class 
      Workbookone = new XSSFWorkbook(inputStream); 
     } //Check condition if the file is xls file 
     else if (fileExtensionName.equals(".xls")) { 
      //If it is xls file then create object of XSSFWorkbook class 
      Workbookone = new HSSFWorkbook(inputStream); 
     } 
     //Read sheet inside the workbook by its name 
     totalSheet = Workbookone.getNumberOfSheets(); 
     if (totalSheet > 0) { 
      System.out.println("Total Sheet Found:" + totalSheet); 
      for (int k = 0; k < totalSheet; k++) { 
       System.out.println("Sheet Name:" + Workbookone.getSheetName(k)); 
       Sheet1 = Workbookone.getSheetAt(k); 
       System.out.println("Sheet Found:" + Sheet1); 
       //Find number of rows in excel file 
       int rowCount = Sheet1.getLastRowNum() - Sheet1.getFirstRowNum(); 
       /** 
       * 
       * You are reinitializing the object here so old datas will be lost 
       */ 
       object = new Object[rowCount][5]; 
       for (int i = 0; i < rowCount; i++) { 
        //Loop over all the rows 
        Row row = Sheet1.getRow(i + 1); 
        //Create a loop to print cell values in a row 
        for (int j = 0; j < row.getLastCellNum(); j++) { 
         //Print excel data in console 
         object[i][j] = row.getCell(j).toString(); 
         System.out.println(object[i][j]); 
        } 
       } 
       System.out.println(""); 
       sheetDatas.add(object); 
      } 
     } 
     return sheetDatas; 
    } 
} 

Например, если вы хотите получить значение из листа 2
можно назвать как list.get (1)

+0

Pls дает подробный код, чтобы я мог работать. –

Смежные вопросы