如何使用C#从Excel工作表中提取关联指定字符串的整数?
C# 提取Excel中符合条件的A列数据
实现思路
- 遍历A、B列的实际数据行
- 校验B列单元格是否为非空有效字符串
- 若B列符合要求,读取对应A列的整数并输出到控制台
- 操作完成后释放Excel相关对象,避免后台进程残留
完整代码示例
using Excel = Microsoft.Office.Interop.Excel; using System; class Program { static void Main() { string fileExcel = @"C:\test.xlsx"; Excel.Application xlApplication = new Excel.Application(); Excel.Workbook xlWorkbook = xlApplication.Workbooks.Open(fileExcel); Excel.Worksheet xlWorksheet = xlWorkbook.ActiveSheet; Excel.Range xlRange = xlWorksheet.UsedRange; // 仅遍历有实际数据的区域 int rowCount = xlRange.Rows.Count; // 若表格无表头,将起始行改为1 for (int i = 2; i <= rowCount; i++) { // 处理B列值,去除首尾空白 string bCellContent = xlRange.Cells[i, 2].Value?.ToString().Trim() ?? string.Empty; // 判断B列是否为非空字符串 if (!string.IsNullOrEmpty(bCellContent)) { // 安全转换A列为整数并输出 if (int.TryParse(xlRange.Cells[i, 1].Value?.ToString(), out int aColumnValue)) { Console.WriteLine(aColumnValue); } else { // 可选:处理A列非整数的异常情况 Console.WriteLine($"第{i}行A列数据不是有效整数"); } } } // 必须释放COM对象,防止Excel后台进程残留 xlWorkbook.Close(); xlApplication.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorksheet); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApplication); } }
关键细节说明
- 使用
UsedRange替代直接选中A:B列,减少无效空行遍历,提升效率 - 对B列值做
Trim()处理,避免空白字符被误判为有效内容 - 用
int.TryParse做安全转换,避免非整数数据引发运行时异常 - 手动释放所有Excel COM对象是必要操作,否则Excel进程会在后台持续运行
内容的提问来源于stack exchange,提问作者m.woods
相关产品推荐
相关产品推荐

