删除部分行后Excel导入计数异常问题求助
解决Excel删除行后Rows.Count返回值不准确的问题
问题原因
Excel的Rows.Count返回的是工作表曾经被使用过的最大行数,哪怕你删除了行内容,只要这些行曾被编辑过(比如设置过格式、输入过内容后删除),Excel会保留这个“已使用”的标记,所以读取时仍会返回原来的数值。
手动修复方法
- 打开Excel文件,选中删除后剩下的空白行(比如你案例里的第7-10行)
- 右键选择「删除整行」,而非仅清除单元格内容
- 保存文件后重新导入读取,此时
Rows.Count会返回正确的6行
代码层面的解决方案(针对常用Excel操作库)
1. 使用EPPlus库
不要直接依赖worksheet.Rows.Count,改用worksheet.Dimension.End.Row,它会自动识别实际包含数据/格式的最后一行:
int actualRowCount = worksheet.Dimension?.End.Row ?? 0;
2. 使用NPOI库
用sheet.LastRowNum获取最后一行索引,同时额外判断每行是否有有效数据:
int actualRowCount = 0; for (int i = 0; i <= sheet.LastRowNum; i++) { var row = sheet.GetRow(i); if (row != null && row.Cells.Any(cell => cell.CellType != CellType.Blank)) { actualRowCount++; } }
3. 通用逻辑(适用于大多数库)
遍历所有行,判断每行是否存在非空单元格,统计有效行数,彻底避免Excel的“已使用行”标记干扰。
内容的提问来源于stack exchange,提问作者TechChoice
相关产品推荐
相关产品推荐

