.NET怎么将CSV文件读取到DataTable中_CSV文件读取DataTable方法

使用File.ReadAllLines可处理简单CSV,但需手动处理分隔符;2. 推荐TextFieldParser应对复杂CSV,能解析引号内换行与逗号;3. CsvHelper功能强但需转换才能生成DataTable;4. 注意编码、字段数一致、内存占用及列名重复问题。

.net怎么将csv文件读取到datatable中_csv文件读取datatable方法

在 .NET 中将 CSV 文件读取到 DataTable 是一个常见需求,尤其在处理数据导入、报表生成等场景。下面介绍几种简单有效的方法。

使用 File.ReadAllLines 和字符串处理(原生方法)

这种方法不依赖第三方库,适合结构简单的 CSV 文件。

读取所有行,按行分割字段 第一行通常作为列名 手动处理分隔符和引号问题(注意:复杂 CSV 可能需要额外处理)

示例代码:

using System;using System.Data;using System.IO;public DataTable ReadCsvToDataTable(string filePath){    var dt = new DataTable();    string[] lines = File.ReadAllLines(filePath);        if (lines.Length == 0) return dt;    // 第一行作为列名    string[] headers = lines[0].Split(',');    foreach (string header in headers)    {        dt.Columns.Add(header);    }    // 添加数据行    for (int i = 1; i < lines.Length; i++)    {        string[] fields = lines[i].Split(',');        DataRow dr = dt.NewRow();        for (int j = 0; j < fields.Length; j++)        {            dr[j] = fields[j];        }        dt.Rows.Add(dr);    }    return dt;}

使用 TextFieldParser(推荐用于复杂 CSV)

.NET 提供了 Microsoft.VisualBasic.FileIO.TextFieldParser,能正确处理带引号、换行的字段,是官方推荐方式。

支持逗号、制表符等分隔符 自动处理包含分隔符的文本(如 “Smith, John”) 需添加对 Microsoft.VisualBasic 的引用(.NET Core/.NET 5+ 默认可用)

示例代码:

using System.Data;using Microsoft.VisualBasic.FileIO;public DataTable ReadCsvWithTextFieldParser(string filePath){    var dt = new DataTable();    using (var parser = new TextFieldParser(filePath))    {        parser.Delimiters = new string[] { "," };        parser.HasFieldsEnclosedInQuotes = true;        // 读取标题行        if (!parser.EndOfData)        {            string[] headers = parser.ReadFields();            foreach (string header in headers)            {                dt.Columns.Add(header);            }        }        // 读取数据行        while (!parser.EndOfData)        {            string[] fields = parser.ReadFields();            DataRow dr = dt.NewRow();            for (int i = 0; i < fields.Length; i++)            {                dr[i] = fields[i];            }            dt.Rows.Add(dr);        }    }    return dt;}

使用第三方库:CsvHelper(功能强大)

如果你需要更高性能或映射到对象,CsvHelper 是优秀选择。

NuGet 安装:Install-Package CsvHelper 支持类型转换、自定义映射、多语言编码 不能直接输出 DataTable,但可通过中间对象转换

基本思路:先读为 List>,再转 DataTable。

注意事项

实际使用中注意以下几点:

确保 CSV 编码一致(常用 UTF-8,含 BOM 时注意) 字段数量不一致可能导致异常,建议加判断 大数据量时考虑流式读取,避免内存溢出 列名重复会导致 DataTable 异常,可做去重处理基本上就这些。根据项目需求选择合适方式,小项目用 TextFieldParser 最稳妥。

以上就是.NET怎么将CSV文件读取到DataTable中_CSV文件读取DataTable方法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1441330.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 17:58:41
下一篇 2025年12月17日 17:58:59

相关推荐

发表回复

登录后才能评论
关注微信