首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache POI无法从电子表格中获取所有行和列

Apache POI无法从电子表格中获取所有行和列
EN

Stack Overflow用户
提问于 2018-08-10 20:15:22
回答 1查看 151关注 0票数 0

我正在使用selenium、testNG和Apache POI创建一个测试框架。到目前为止,我已经创建了一段代码,它将从电子表格中获取每一行并将其插入到测试中。但是,在添加新行时,它会简单地忽略添加的行。任何帮助都是非常感谢的。

获取输入的代码:

代码语言:javascript
复制
@DataProvider(name="ExcelData")
public Object[][] passData() {
    ExcelDataConfig config = new ExcelDataConfig("C:\\Users\\dindo\\Documents\\tests\\d2c-lv-int-01_DATA.xlsx");

    int rows = config.getRowCount(0);
    int frows = rows-2;
    Object[][] data = new Object[frows][11];
    for(int i=2;i<rows;i++)
    {
        data[i-2][0]=config.getStrData(0, i, 0);
        data[i-2][1]=config.getIntData(0, i, 1);
        data[i-2][2]=config.getIntData(0, i, 2);
        data[i-2][3]=config.getStrData(0, i, 3);
        data[i-2][4]=config.getStrData(0, i, 4);
        data[i-2][5]=config.getStrData(0, i, 5);
        data[i-2][6]=config.getIntData(0, i, 6);
        data[i-2][7]=config.getIntData(0, i, 7);
        data[i-2][8]=config.getIntData(0, i, 8);
        data[i-2][9]=config.getStrData(0, i, 9);
        data[i-2][10]=config.getStrData(0, i, 10);

    }
    return data;
}

Excel工作表代码:

代码语言:javascript
复制
public ExcelDataConfig(String excelPath) {

    try {
        File src = new File(excelPath);
        FileInputStream fis = new FileInputStream(src);
        wb = new XSSFWorkbook(fis);

    } catch (Exception e) {
        System.out.println(e.getMessage());
    }

}

public String getStrData(int sheetNumber,int row, int col) {
    Details = wb.getSheetAt(sheetNumber);
    String strdata = Details.getRow(row).getCell(col).getStringCellValue();

    return strdata;
}

public String getIntData(int sheetNumber,int row, int col) throws NullPointerException{
    Details = wb.getSheetAt(sheetNumber);
    double doubledata = Details.getRow(row).getCell(col).getNumericCellValue();
    int intdata = (int) doubledata;
    String strdata = Integer.toString(intdata);
    return strdata;
}

public int getRowCount(int sheetIndex)
{
    int row = wb.getSheetAt(sheetIndex).getLastRowNum();
    return row;
}

此外,有没有可能将getIntData和getStrData合并为一个函数,该函数会自动知道它是字符串还是整数。

在此之前,非常感谢您。

EN

回答 1

Stack Overflow用户

发布于 2018-08-11 07:18:56

经过大量的键盘敲击之后,我终于弄清楚了chink。原因很简单,当Apache POI将xlsx文件中的第一行设置为0时,数组中的行数就会减少1到更少。愚蠢的是,我意外地在最后一行下面多了一个字母保存了我的工作表,从而发现了这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51786320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档