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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端