3.NPOI Excel 删除行
开发环境:.Net Core 3.1,NPOI 2.6.0
这里的删除行,是移除行,不只是清除行数据内容,具体方法就是移动下方的数据覆盖上方。
数据图:
需求1:删除第10行
string filepath = @"C:\test1.xlsx";
FileStream file = new FileStream(filepath, FileMode.Open, FileAccess.Read);
//如果是xls, 使用 HSSFWorkbook
//如果是xlsx,使用 XSSFWorkbook
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet ws = (XSSFSheet)workbook.GetSheet("报告单");//第一个sheet页叫报告单
//要删除第10行,从11行开始都往上移一行
for (int i = 11; i < ws.LastRowNum; i++)
{
//如果移动两行,就-2
ws.ShiftRows(i, i, -1);
}
需求2:删除第一行,请注意第一行的合并格式,此处第二行还是一整行,还是没啥问题的,但是如果第二行是现在第三行的列标题或者第三行以后的设备数据,就会报错
Cannot add merged region A6:X6 to sheet because it overlaps with an existing merged region (F6:L6)
注意,ShiftRows操作行上移原则
1.被覆盖的行是整行都被合并
2.原始网格,没有任何合并
3.合并格式与要移动上来的行格式相同
最终方案:为了避免意外情况,只要上移,可统一先删除合并样式
//删除第一行的合并单元格格式
RemoveMergedRegion(ws, 0);
for (int i = 1 ; i < ws.LastRowNum; i++)
{
ws.ShiftRows(i, i, -1);
}
RemoveMergedRegion来自2.构建Excel帮助类 - 0Behavior - 博客园 (cnblogs.com)