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

在 .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
微信扫一扫
支付宝扫一扫