使用POI操作excel。有时候需要删除某些行。但是使用sheet.removeRow只能删除行的内容。现实中删除一行这行就应该彻底删除。但是poi不是这样做,要达到这样的效果就是使用sheet.removeRow删除行内容后,再使用sheet.shiftRows(a,b,c)方法使下面的行上移。
sheet.shiftRows(a,b,c)是将a行到b行上移(-c)下移(+c)。所以就是c参数是控制方向的负数是上移,正数是下移。
demo如下:
/**
* excel删除行
* @param sheet sheet
* @param startRow 起始行
* @param endRow 结束行
*/
private void deleteRow(Sheet sheet,int startRow,int endRow){
for(int i = startRow;i<startRow+endRow-1;i++){
//此方法只能删除行内容
sheet.removeRow(sheet.getRow(i));;
}
int lastRowNum = sheet.getLastRowNum();
//此方法是将余下的行向上移
sheet.shiftRows(endRow, lastRowNum, (startRow-endRow));
}