从工作簿中的所有工作表中读取数据

时间:2015-02-03 11:18:20

标签: java selenium-webdriver

需要从单个工作簿中的所有可用工作表中读取数据。 我正在使用下面的代码,但它只返回最后一个工作表的值。

Workbook finalWB =ReadInpuFile.readxl(System.getProperty("user.dir")+"//","TestCases.xlsx","TestSuite");

    for(int k=0;k<finalWB.getNumberOfSheets();k++)
    {
      Sheet finalsheet = finalWB.getSheetAt(k);

      if(finalsheet !=null)
      {
        //int rowCount = finalsheet.getLastRowNum()-finalsheet.getFirstRowNum();
        int rowCount = finalsheet.getLastRowNum();
        System.out.println("rowcount" +rowCount);
        object = new Object[rowCount][5];
        for (int i = 0; i < rowCount; i++) 
        {
          //Loop over all the rows
          Row row = finalsheet.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();

          }
       } 
    }
}

我在单个工作簿中有3张。 请帮帮我。

谢谢, 沙迪亚

3 个答案:

答案 0 :(得分:0)

使用getSheet(index)代替getSheetAt(index)

Sheet finalsheet = finalWB.getSheet(k);

答案 1 :(得分:0)

下面是完整的方法,在这里返回对象

public Object[][] getTestCase() throws IOException{
    Object[][] object = null;
 Workbook finalWB =ReadInpuFile.readxl(System.getProperty("user.dir")+"//","TestCases.xlsx","TestSuite");

for(int k=0;k<finalWB.getNumberOfSheets();k++){
Sheet finalsheet = finalWB.getSheetAt(k);

    if(finalsheet !=null){
    //int rowCount = finalsheet.getLastRowNum()-finalsheet.getFirstRowNum();
    int rowCount = finalsheet.getLastRowNum();
    System.out.println("rowcount" +rowCount);
    object = new Object[rowCount][5];
    for (int i = 0; i < rowCount; i++) {

        Row row = finalsheet.getRow(i+1);
       for (int j = 0; j < row.getLastCellNum(); j++) {
            object[i][j] = row.getCell(j).toString();
            System.out.println(object[i][j]);
        }
    } 
}}
   System.out.println("done");
     return object;    
    }
}

答案 2 :(得分:0)

正如我在评论中提到的:当您在此方法中循环遍历页数时,您将不断覆盖对象数组中的值。这就是为什么你只是看到最后一次迭代/最后一张表的结果。

如果必须从方法中返回Object的2D数组,那么您应该查看方法的这一部分:

object = new Object[rowCount][5];
for (int i = 0; i < rowCount; i++) {

   Row row = finalsheet.getRow(i+1);
   for (int j = 0; j < row.getLastCellNum(); j++) {
        object[i][j] = row.getCell(j).toString();
        System.out.println(object[i][j]);
    }
}