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)

posted @ 2023-03-08 14:39  0Behavior  阅读(1651)  评论(0编辑  收藏  举报