我想问的问题与该用户问here的问题完全相同。但是,那里没有公认的答案,也没有我可以尝试的答案。我已经阅读了文档here,但似乎不知道在不循环的情况下获取工作表的总行。
在这种情况下,我和他问:“例如,我正在处理1007条记录。我已定义批大小为1000,并在“ endrow”方法中将数据对象添加到列表中,然后将列表的大小检查为1000并清除1000条记录中的列表。但是,我无法处理最后7条记录,因为我不知道工作表的最后一条记录。”也许,我想在endRow方法内使用if语句,如果我知道如何获取总行,就可以这样:
public void endRow(int i) {
if (i > 0) {
result.add(myObject);
if (i % 1000 == 0) {
// execute batch insert
repo.save(result);
result.removeAll(result);
repo.flush();
}
if (i % 1000 != 0 && i == lastRow) {
// save remaining data
// but I did not know how to get the lastRow
repo.save(result);
repo.removeAll(result);
repo.flush();
}
}
}
添加
Here是我实际上正在做的。但是,是的,在处理工作表之前或不使用for循环的情况下,我无法获得行的大小。