根据自己实际操作,poi中lastRowNum方法获取行数的是excel最后有数据的一行,从0开始
而physicalNumberOfRows方法获取的行数是excel最后有数据的一行减去最后一行之前的空白行
工作中有一个需求是,上传excel文件导入数据,但是需要将成功的数据的条数,和失败条数返回,这种情况我的做法就是将成功的条数从excel中删除,使用
sheet.removeRow(sheet.getRow(40));
但是这个方法我们删除的只是数据,当前行并没有删除,所以留下来的是一个空行
这种情况就需要将空行后边的数据全部向前移一行,用到的方法是
sheet.shiftRows(i+1,physicalNumberOfRows,-1);
二个参数为需要移动的行的区间,第三个参数负数代表向前移,正数代表向后移
具体代码:
FileInputStream fileInputStream = new FileInputStream("D:\\MyDocuments\\itw_renzm\\桌面\\file.xls");
HSSFWorkbook workbook = new HSSFWorkbook(fileInputStream);
HSSFSheet sheet = workbook.getSheetAt(0);
int physicalNu