新闻中心

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

2025-11-01
浏览次数:
返回列表
使用TextFieldParser可稳定读取CSV到DataTable,支持复杂格式。首先添加Microsoft.VisualBasic引用,用TextFieldParser设置逗号分隔,首行作列名,逐行读取数据并填充DataTable,能正确处理引号、换行和逗号;简单CSV可用StreamReader加Split解析;注意文件编码、内存占用,大文件应逐行处理,推荐UTF8编码,复杂场景优先选TextFieldParser或CsvHelper库。

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

在 .NET 中,可以使用 StreamReader 结合 TextFieldParser(来自 Microsoft.VisualBasic.FileIO 命名空间)或手动解析的方式将 CSV 文件读取到 DataTable 中。推荐使用 TextFieldParser,因为它能正确处理包含逗号、换行或引号的字段。

使用 TextFieldParser 读取 CSV 到 DataTable

这是最稳定且推荐的方法,尤其适用于格式复杂的 CSV 文件。

步骤:

  • 添加对 Microsoft.VisualBasic 的引用(即使在 C# 项目中也可用)
  • 使用 TextFieldParser 设置分隔符并逐行读取
  • 第一行通常作为列名
  • 后续行作为数据插入 DataTable

示例代码:

using System.Data;
using Microsoft.VisualBasic.FileIO;
<p>DataTable LoadCsvToDataTable(string filePath)
{
DataTable dt = new DataTable();</p><pre class="brush:php;toolbar:false;">using (TextFieldParser parser = new TextFieldParser(filePath))
{
    parser.TextFieldType = FieldType.Delimited;
    parser.SetDelimiters(",");

    // 读取第一行作为列名
    if (!parser.EndOfData)
    {
        string[] fields = parser.ReadFields();
        foreach (string field in fields)
        {
            dt.Columns.Add(field);
        }
    }

    // 读取剩余行作为数据
    while (!parser.EndOfData)
    {
        string[] fields = parser.ReadFields();
        dt.Rows.Add(fields);
    }
}

return dt;

}

Musho Musho

AI网页设计Figma插件

Musho 76 查看详情 Musho

手动使用 StreamReader 解析(简单 CSV)

如果 CSV 文件格式简单(无引号包裹的逗号或换行),可以直接用 StreamReaderSplit(',')

示例代码:

using System.IO;
using System.Data;
<p>DataTable LoadCsvSimple(string filePath)
{
DataTable dt = new DataTable();
string[] lines = File.ReadAllLines(filePath);</p><pre class="brush:php;toolbar:false;">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[] data = lines[i].Split(',');
    dt.Rows.Add(data);
}

return dt;

}

注意事项

实际使用时需要注意以下几点:

  • CSV 文件编码问题:建议使用 new StreamReader(filePath, Encoding.UTF8) 明确指定编码
  • 字段中包含逗号时(如 "Smith, John"),必须用 TextFieldParser 才能正确解析
  • 大文件建议逐行读取,避免一次性加载到内存
  • 可考虑使用第三方库如 CsvHelper,功能更强大

基本上就这些。对于大多数场景,使用 TextFieldParser 是最稳妥的选择。

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


# csv  # .net  # 正确处理  # 换行  # asic  # 内存占用  # csv文件  # c#  # stream  # microsoft  # 编码  # seo院校  # 栾城区外贸网站推广报价  # 超越同行网站优化方案  # 淮北矩阵营销推广加盟  # 大数据财务网站建设要求  # 马尾seo公司  # 泌阳网站建设电话  # 同城推广团队营销  # 福州优化大师网站官网  # 盐山网站优化哪里有  # 可以直接  # 中文网  # 要注意  # 相关文章  # 适用于  # 推荐使用  # 大文件  # 这是 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 树莓派传感器触发:通过Twilio API发送WhatsApp消息教程  聚水潭ERP登录页面入口 聚水潭ERP官网登录界面  Typer应用中灵活处理命令行参数的令牌化与解析  J*aScript中高效清空DOM列表元素:解决for循环中断与任务管理问题  Golang如何安装Swagger工具_GoSwagger文档生成环境  EMS快递官网app_中国邮政速递物流手机客户端  冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法  Go RPC HTTP服务正确实现与常见陷阱解析  在React函数组件中利用原生HTML5进行邮箱地址验证  HTML转PPT成品工具有哪些?HTML网页转PPT成品工具大全  在VS Code中配置和运行Dart程序的完整步骤  c++ 获取系统当前时间 c++时间戳获取方法  如何优雅地扩展SprykerGlue后端API授权逻辑,使用spryker/glue-backend-api-application-authorization-connector-extension  红果短剧网页版官网入口 官方最新网址发布  如何使用spryker/configurable-bundles-products-resource-relationship模块解决复杂产品捆绑关系难题  妖精动漫免费平台 妖精动漫官网资源观看网址  Shopware订单对象中获取产品自定义字段的正确方法  豆包手机助手发布技术预览版:直接嵌入手机系统!努比亚样机发售  vivo浏览器自带的下载器速度慢怎么办 vivo浏览器提升文件下载速度的技巧  顺丰快递查询系统 官方正版查询入口  Windows电脑怎么截图最方便_系统自带截图工具的5种神仙用法【技巧】  QQ邮箱网页版登录入口 QQ邮箱官方在线使用平台  腾讯QQ邮箱官方网站_QQ邮箱网页版在线登录  《明末:渊虚之羽》设计师谈设计角色:那会刚毕业 充满激情  Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践  AO3最新官网入口公告_2025AO3镜像站实时查询方法  品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程  抖音网页版平台入口 抖音网页版官网在线访问教程  Win11怎么关闭触摸屏_Windows 11禁用HID符合标准触摸屏  小米汽车11月交付量突破40000台!雷军:将继续努力  初次安装JDK时环境变量如何正确配置_J*A_HOME与PATH设置规则讲解  解决Bootstrap卡片顶部边距导致背景图下移的问题  KFC早餐时段怎么领特惠代码_KFC早餐订餐优惠代码获取与使用说明  俄罗斯Yandex搜索引擎入口_Yandex官网免登录一键访问  利用Bokeh CustomJS动态控制DataTable列可见性  win11怎么查看应用耗电情况 Win11电池设置查看应用能耗排行榜【优化】  126邮箱手机版登录官网2026_126手机邮箱免费入口最新  小猿搜题在线学习页面在哪_小猿搜题在线学习中心入口  Django表单提交验证失败后保持字段值不刷新  神庙逃亡小游戏在线玩 神庙逃亡小游戏入口  C++ vector二维数组定义_C++ vector of vector用法  谷歌浏览器怎么给标签页静音_Chrome标签静音快捷操作  如何在J*a中使用Locale处理多语言环境  windows10怎么查看本机ip_windows10命令提示符ipconfig使用  WordPress插件开发:正确注册卸载钩子与避免常见陷阱  深入理解Go语言中的指针类型:以*string为例  Win10如何清理注册表垃圾 Win10手动清理无效注册表【技巧】  漫画星球免费下拉式入口 漫画星球免费漫画在线阅读网站  12306选座系统怎么选连座_12306选座多人连坐操作方法  C++如何使用AddressSanitizer(ASan)_C++调试工具中检测内存访问错误的利器 

搜索