需要从单个工作簿中的所有可用工作表中读取数据。 我正在使用下面的代码,但它只返回最后一个工作表的值。
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张。 请帮帮我。
谢谢, 沙迪亚
答案 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]);
}
}