根据一列读取excel数据并将其馈送到java类

根据一列读取excel数据并将其馈送到java类,java,excel,apache-poi,testng,Java,Excel,Apache Poi,Testng,我目前正在从excel工作表中提取数据,并使用testNG的dataProvider注释传递给我的测试。我从excel返回数据的代码如下 public static Object [][] excelData(String filepath) throws Exception { File excelFilePath = new File (filepath); FileInputStream fis = new FileInputStream(excelFilePath);

我目前正在从excel工作表中提取数据,并使用testNG的dataProvider注释传递给我的测试。我从excel返回数据的代码如下

public static Object [][] excelData(String filepath) throws Exception {
   File excelFilePath = new File (filepath);
   FileInputStream fis = new FileInputStream(excelFilePath);

   HSSFWorkbook wb = new HSSFWorkbook(fis);
   HSSFSheet ws = wb.getSheet("Data");

   int rowNum = ws.getLastRowNum()+1;
   int colNum = ws.getRow(0).getLastCellNum();
   Object[][] data = new Object[rowNum][colNum];

   for (int i=0; i<rowNum; i++){
     HSSFRow row = ws.getRow(i);
     for (int j=0; j<colNum; j++){
        HSSFCell cell = row.getCell(j);
        Object value =(Object) cellToString(cell);
        data[i][j] = (Object)value;
      //  System.out.println("The value is " + value);

     }
   }

   System.out.println(Arrays.deepToString(data));

   return data;
}
当前的excel如下所示

我需要用户名和密码,以通过根据最后一列如下


您的代码当前读取所有单元格

在excel文件中,可能有不同大小的列。如果只获得第一行的大小,则会丢失一些行的单元格值(大于第一行coulmn大小)。 而不是
int colNum=ws.getRow(0.getLastCellNum()您应该编写自己的方法来查找最大的列大小,如下所示。调用此方法
int colNum=getMaxColumnNum(ws)

public static int getMaxColumnNum(HSSFSheet ws){
int rowNum=ws.getLastRowNum()+1;
int max=0;
内部温度=0;
for(int i=0;i

另外,您的方法名称是
cellToString()
,但它返回对象,您应该使用
getCellValue()

更改其名称,为什么不使用该方法将单元格的值作为字符串获取?您是对的,谢谢。包括建议的更改
public static Object cellToString(HSSFCell cell){
   int type;
   Object result;
   type = cell.getCellType();

   switch(type) {
    case 0://numeric value in excel
        result = cell.getNumericCellValue();
        break;
    case 1: //string value in excel
        result = cell.getStringCellValue();
        break;
    case 2: //boolean value in excel
        result = cell.getBooleanCellValue ();
        break;
    default:
        throw new RuntimeException("There are not support for type with id ["+type+"] of cell");
   }

   return result;
 }
public static int getMaxColumnNum(HSSFSheet ws) {
    int rowNum = ws.getLastRowNum() + 1;
    int max = 0;
    int temp = 0;
    for (int i = 0; i < rowNum; i++) {
        temp = ws.getRow(i).getLastCellNum();
        if (max < temp)
            max = temp;
    }
    return max;
}