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

C#中实现类似Pandas read_csv读取指定分隔符CSV到DataTable的方法

用CsvHelper快速将指定分隔符的CSV读取到DataTable

我太懂你想要的那种“一行式”简洁感了——就像Pandas的pandas.read_csv()那样,不用提前定义复杂结构,直接把CSV转成DataTable对吧?其实用CsvHelper完全能实现类似的效果,而且步骤也很简单,我给你整理两种实用的写法:

方法一:最贴近Pandas风格的简洁写法

这种方式借助CsvHelper.Data扩展包的CsvDataReader,可以直接让DataTable加载CSV数据,几乎和你想象的代码结构一致:

首先确保你已经通过NuGet安装了两个包:CsvHelper和CsvHelper.Data。

然后写代码:

using CsvHelper;
using CsvHelper.Configuration;
using CsvHelper.Data;
using System.Data;
using System.Globalization;

string csvPath = "myPath.csv";

// 配置CSV的分隔符和其他规则
var csvConfig = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    Delimiter = "|", // 指定你的分隔符
    HasHeaderRecord = true // 如果CSV第一行是表头,设为true;没有表头就设为false
};

using (var streamReader = new StreamReader(csvPath))
using (var csvReader = new CsvReader(streamReader, csvConfig))
using (var csvDataReader = new CsvDataReader(csvReader))
{
    DataTable dt = new DataTable();
    dt.Load(csvDataReader); // 这一步就完成了加载,和Pandas的read_csv异曲同工
}

方法二:手动控制列和行的加载(适合需要自定义处理的场景)

如果需要对列类型、数据做额外处理,这种方式更灵活:

using CsvHelper;
using CsvHelper.Configuration;
using System.Data;
using System.Globalization;

string csvPath = "myPath.csv";
var csvConfig = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    Delimiter = "|"
};

using (var streamReader = new StreamReader(csvPath))
using (var csvReader = new CsvReader(streamReader, csvConfig))
{
    DataTable dt = new DataTable();
    
    // 先根据CSV表头创建DataTable的列
    csvReader.Read();
    csvReader.ReadHeader();
    foreach (var header in csvReader.HeaderRecord)
    {
        // 这里可以自定义列类型,比如dt.Columns.Add(header, typeof(int))
        dt.Columns.Add(header);
    }

    // 逐行读取并填充DataTable
    while (csvReader.Read())
    {
        DataRow row = dt.NewRow();
        for (int i = 0; i < csvReader.Context.Record.Length; i++)
        {
            row[i] = csvReader.Context.Record[i];
            // 这里可以对每个单元格的数据做转换处理
        }
        dt.Rows.Add(row);
    }
}

这两种写法都能满足你的需求,第一种更简洁,和Pandas的用法最接近;第二种适合需要自定义数据处理的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:11:09