• .NET使用CsvHelper快速读取和写入CSV文件


    前言

    在日常开发中使用CSV文件进行数据导入和导出、数据交换是非常常见的需求,今天我们来讲讲在.NET中如何使用CsvHelper这个开源库快速实现CSV文件读取和写入。

    CsvHelper类库介绍

    CsvHelper是一个.NET开源、快速、灵活、高度可配置、易于使用的用于读取和写入CSV文件的类库。

    图片

    CsvHelper类库特点

    图片

    什么是 .csv 文件?

    .csv 文件是一种用于存储表格数据的文本文件,CSV 是 "Comma-Separated Values" 的缩写,意思是 "逗号分隔值"。CSV 文件是一个存储表格和电子表格信息的纯文本文件,其内容通常是一个文本、数字或日期的表格。CSV 文件可以使用以表格形式存储数据的程序轻松导入和导出。

    创建控制台应用

    创建一个名为:CsvHelperExercise的.NET 8控制台应用。

    图片

    图片

    图片

    安装CsvHelper类库

    NuGet包管理器中搜索:CsvHelper,点击安装!

    图片

    定义CSV文件读取和写入的对象

    1.     public class StudentInfo
    2.     {
    3.         /// <summary>
    4.         /// 学生学号
    5.         /// </summary>
    6.         public int ID { getset; }
    7.         /// <summary>
    8.         /// 学生姓名
    9.         /// </summary>
    10.         public string Name { getset; }
    11.         /// <summary>
    12.         /// 学生年龄
    13.         /// </summary>
    14.         public int Age { getset; }
    15.         /// <summary>
    16.         /// 班级
    17.         /// </summary>
    18.         public string Class { getset; }
    19.         /// <summary>
    20.         /// 性别
    21.         /// </summary>
    22.         public string Gender { getset; }
    23.         /// <summary>
    24.         /// 住址
    25.         /// </summary>
    26.         public string Address { getset; }
    27.     }

    写入CSV文件数据

    1.         static void Main(string[] args)
    2.         {
    3.             var students = new List<StudentInfo>
    4.             {
    5.                 new StudentInfo { ID = 1, Name = "张三", Age = 20Class = "终极一班", Gender = "男"Address = "北京市东城区" },
    6.                 new StudentInfo { ID = 2, Name = "李四", Age = 21Class = "终极一班", Gender = "女"Address = "上海市黄浦区" },
    7.                 new StudentInfo { ID = 3, Name = "王五", Age = 22Class = "终极一班", Gender = "男"Address = "广州市越秀区" },
    8.                 new StudentInfo { ID = 4, Name = "赵六", Age = 20Class = "终极二班", Gender = "女"Address = "深圳市福田区" },
    9.                 new StudentInfo { ID = 5, Name = "孙七", Age = 23Class = "终极二班", Gender = "男"Address = "杭州市西湖区" },
    10.                 new StudentInfo { ID = 6, Name = "周八", Age = 24Class = "终极二班", Gender = "女"Address = "南京市玄武区" },
    11.                 new StudentInfo { ID = 7, Name = "吴九", Age = 22Class = "终极二班", Gender = "男"Address = "成都市锦江区" },
    12.                 new StudentInfo { ID = 8, Name = "小袁", Age = 21Class = "终极三班", Gender = "女"Address = "重庆市渝中区" },
    13.                 new StudentInfo { ID = 9, Name = "大姚", Age = 20Class = "终极三班", Gender = "男"Address = "武汉市武昌区" },
    14.                 new StudentInfo { ID = 10, Name = "追逐时光者", Age = 23Class = "终极三班", Gender = "女"Address = "长沙市天心区" }
    15.             };
    16.             //写入CSV文件数据
    17.             using var writer = new StreamWriter(@".\StudentInfoFile.csv");
    18.             using var csvWriter = new CsvWriter(writer, CultureInfo.InvariantCulture);
    19.             csvWriter.WriteRecords(students);
    20.         }

    图片

    读取CSV文件数据

    快速读取上面写入到StudentInfoFile.csv中的数据。

    1.         static void Main(string[] args)
    2.         {
    3.             //读取CSV文件数据
    4.             using var reader = new StreamReader(@".\StudentInfoFile.csv");
    5.             using var csvReader = new CsvReader(reader, CultureInfo.InvariantCulture);
    6.             var getStudentInfos = csvReader.GetRecords().ToList();
    7.         }

    图片

    项目源码地址

    更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。

    • CsvHelper类库开源地址:https://github.com/JoshClose/CsvHelper

    • 文章示例源码地址:https://github.com/YSGStudyHards/DotNetExercises/tree/master/CsvHelperExercise

    优秀项目和框架精选

    该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。

    https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

    参考文章

    • https://www.freecodecamp.org/chinese/news/what-is-a-csv-file-and-how-to-open-the-csv-file-format/

  • 相关阅读:
    【学习笔记】CF559E Gerald and Path
    UE5如何实现语言本地化管理(中英文切换)
    拓展3: Python Xpath表达式的使用
    Golang编写客户端SDK,并开源发布包到GitHub,供其他项目import使用
    js 滚动鼠标滑轮放大缩小图片
    【超好懂的比赛题解】HNCPC Multi-university Training Round2 比赛题解(AHBGIK)
    PHP笔记:时间日期
    音视频按照时长分类小工具
    【 医学影像| 数据预处理】
    flask项目请求与响应
  • 原文地址:https://blog.csdn.net/qq_37237487/article/details/139971712