导入Excel表格时如何在遇到空白行时终止foreach循环
解决方法
你现在代码的问题是没有做空白行校验,读取了Excel末尾无有效内容的空行,按以下逻辑修改即可实现遇到空白行直接终止导入:
DataSets = new ImportList().ImportFromExcel(); var list = new List<string>(); foreach (DataTable table in DataSets[0].Tables) { foreach (DataRow row in table.Rows) { // 校验当前行是否为全空白行 bool isEmptyRow = row.ItemArray.All(item => item == null || string.IsNullOrWhiteSpace(item.ToString())); // 遇到空白行直接终止遍历 if (isEmptyRow) break; // 原有字段提取逻辑 list.Add(row["LAST NAME"]?.ToString().Trim() ?? row.ItemArray[7]?.ToString().Trim()); } }
以上代码使用了LINQ的
All语法,需要保证代码文件头部已经引入using System.Linq;,如果不想引入LINQ可以替换为循环遍历ItemArray判断的逻辑,效果完全一致。
可选调整方案
- 如果你只需要校验你提取的
LAST NAME字段是否为空就能判定空白行,可以简化判断逻辑,无需遍历整行所有单元格,运行效率更高:
foreach (DataRow row in table.Rows) { string targetValue = row["LAST NAME"]?.ToString().Trim() ?? row.ItemArray[7]?.ToString().Trim(); // 目标字段为空直接终止导入 if (string.IsNullOrWhiteSpace(targetValue)) break; list.Add(targetValue); }
- 如果你的有效数据中允许中间出现空行,只需跳过空行而非终止导入,将上述代码中的
break替换为continue即可。
内容的提问来源于stack exchange,提问作者Kola
相关产品推荐
相关产品推荐

