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

时间:2018-08-10 12:15:22

标签: excel selenium apache-poi testng

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

获取输入的代码:

CREATE TABLE `test` (
  `num__student` int(11) unsigned NOT NULL,
  `year_study` date DEFAULT NULL,
  `num_item` int(11) DEFAULT NULL,
  `class` varchar(15) DEFAULT NULL,
  `date_day` date DEFAULT NULL,
  `attendee` enum('0','1') NOT NULL DEFAULT '0',
  `excusable` enum('0','1') NOT NULL DEFAULT '0',
  `note` text,
  PRIMARY KEY (`num__student`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `student_academia` (
  `num__student` int(11) unsigned NOT NULL,
  `name_student` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`num__student`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Excel工作表的代码:

@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;
}

还可以将getIntData和getStrData合并为一个函数,该函数自动知道它是字符串还是整数。

非常感谢。

1 个答案:

答案 0 :(得分:0)

经过大量的键盘敲打之后,我终于解决了这个问题。仅仅是因为Apache POI将xlsx文件中的第一行作为0,所以数组中的行就减少了1。足够愚蠢的是,我意外地将工作表保存在表格的最后一行下面,并在其中加上了一个额外的字母。