You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C#的CsvHelper读取CSV文件的指定行及列?

使用CsvHelper读取指定行指定列的数据

核心思路

CsvHelper基于流处理,无法直接跳转到指定行,需逐行读取到目标位置后再提取对应列的数据。以下是两种常见场景的实现代码:


场景1:CSV无表头,行号从1开始计数

using (var reader = new StreamReader("你的文件路径.csv"))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
    // 跳过目标行之前的所有行
    for (int i = 1; i < rowCounter; i++)
    {
        csv.Read();
    }
    
    if (csv.Read())
    {
        // 第3列对应索引2(CsvHelper列索引从0开始)
        var targetValue = csv.GetField<string>(2);
        // 如需其他数据类型,替换<string>为<int>/<double>等
        Console.WriteLine(targetValue);
    }
}

场景2:CSV有表头,数据行从第2行开始

如果rowCounter是包含表头的文件行号:

using (var reader = new StreamReader("你的文件路径.csv"))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
    // 先读取表头
    csv.ReadHeader();
    
    // 跳过表头后,再跳过目标数据行之前的行
    int dataRowsToSkip = rowCounter - 2;
    for (int i = 0; i < dataRowsToSkip; i++)
    {
        csv.Read();
    }
    
    if (csv.Read())
    {
        // 按索引读取第3列
        var targetValue = csv.GetField<string>(2);
        // 也可以通过列名读取:csv.GetField<string>("你的列名")
        Console.WriteLine(targetValue);
    }
}

注意事项

  • 列索引从0开始,第3列对应索引值为2
  • 根据CSV是否包含表头,调整跳过的行数逻辑
  • 读取数据时可直接指定目标类型(如int/double),无需手动转换

内容的提问来源于stack exchange,提问作者hiling99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 06:30:46