.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文件读取和写入的对象

    public class StudentInfo
    {
        /// <summary>
        /// 学生学号
        /// </summary>
        public int ID { get; set; }

        /// <summary>
        /// 学生姓名
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 学生年龄
        /// </summary>
        public int Age { get; set; }

        /// <summary>
        /// 班级
        /// </summary>
        public string Class { get; set; }

        /// <summary>
        /// 性别
        /// </summary>
        public string Gender { get; set; }

        /// <summary>
        /// 住址
        /// </summary>
        public string Address { get; set; }
    }

写入CSV文件数据

        static void Main(string[] args)
        {
            var students = new List<StudentInfo>
            {
                new StudentInfo { ID = 1, Name = "张三", Age = 20, Class = "终极一班", Gender = "男", Address = "北京市东城区" },
                new StudentInfo { ID = 2, Name = "李四", Age = 21, Class = "终极一班", Gender = "女", Address = "上海市黄浦区" },
                new StudentInfo { ID = 3, Name = "王五", Age = 22, Class = "终极一班", Gender = "男", Address = "广州市越秀区" },
                new StudentInfo { ID = 4, Name = "赵六", Age = 20, Class = "终极二班", Gender = "女", Address = "深圳市福田区" },
                new StudentInfo { ID = 5, Name = "孙七", Age = 23, Class = "终极二班", Gender = "男", Address = "杭州市西湖区" },
                new StudentInfo { ID = 6, Name = "周八", Age = 24, Class = "终极二班", Gender = "女", Address = "南京市玄武区" },
                new StudentInfo { ID = 7, Name = "吴九", Age = 22, Class = "终极二班", Gender = "男", Address = "成都市锦江区" },
                new StudentInfo { ID = 8, Name = "小袁", Age = 21, Class = "终极三班", Gender = "女", Address = "重庆市渝中区" },
                new StudentInfo { ID = 9, Name = "大姚", Age = 20, Class = "终极三班", Gender = "男", Address = "武汉市武昌区" },
                new StudentInfo { ID = 10, Name = "追逐时光者", Age = 23, Class = "终极三班", Gender = "女", Address = "长沙市天心区" }
            };

            //写入CSV文件数据
            using var writer = new StreamWriter(@".\StudentInfoFile.csv");
            using var csvWriter = new CsvWriter(writer, CultureInfo.InvariantCulture);
            csvWriter.WriteRecords(students);
        }

图片

读取CSV文件数据

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

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

图片

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/755100.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国产操作系统上netstat命令详解 _ 统信 _ 麒麟 _ 中科方德

原文链接&#xff1a;国产操作系统上netstat命令详解 | 统信 | 麒麟 | 中科方德 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇在国产操作系统上使用netstat命令的详解文章。netstat是网络统计&#xff08;network statistics&#xff09;的缩写&#xff0c;它是一…

音频分离人声和伴奏可以实现吗?手机人声分离工具10款无偿分享!

随着科技的飞速发展&#xff0c;音频处理技术已经取得了显著的进步&#xff0c;其中音频分离人声和伴奏已成为现实。这一技术不仅为音乐制作人和音频工程师提供了便利&#xff0c;更为广大音乐爱好者提供了无限的创作可能性。本文将为大家分享10款手机人声分离工具&#xff0c;…

python查找支撑数 青少年编程电子学会python编程等级考试三级真题解析2022年3月

目录 python查找支撑数 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python查找支撑数 2022年3月 python编程等级考试级编程题 一、题目要求…

Windows定时任务执行脚本

场景&#xff1a;由于网络波动原因导致云数据库没连接上&#xff0c;从而导致某个流程引擎链接不上数据库从而导致该流程引擎服务挂了&#xff0c;网络恢复后 数据库链接正常&#xff0c;但是该引擎服务还是中止状态。 解决方案&#xff1a;在Windows中新建一个定时任务&#…

读AI新生:破解人机共存密码笔记15辅助博弈

1. 辅助博弈 1.1. assistance game 1.2. 逆强化学习如今已经是构建有效的人工智能系统的重要工具&#xff0c;但它做了一些简化的假设 1.2.1. 机器人一旦通过观察人类学会了奖励函数&#xff0c;它就会采用奖励函数&#xff0c;这样它就可以执行相同的任务 1.2.1.1. 解决这…

Stablediffusion SD最好用的图片放大方法 无损4K,8K放大 TILED

Tiled Diffusion Tiled VAE ControlNet Tile模型 只有图生图才能使用Tiled放大倍数。文生图没有放大倍数选项但是可以使用覆盖图像尺寸直接更改尺寸。&#xff08;文生图不容易控制&#xff0c;不如图生图&#xff09; 【采用接力的方法进行放大&#xff1a;先文生图高清修复…

Docker镜像拉去不了解决方案

原理&工具 使用海外的服务器拉去镜像&#xff0c;压缩为tar包&#xff0c;传输到本地在本地运行 服务器&#xff1a;这里我使用的是AWS的服务器&#xff0c;新用户注册免费使用1年&#xff08;流量超了就不免费了&#xff0c;一般用不完&#xff0c;还有使用 Cloudflare …

【AI提升】AI利器Tool Call/Function Call(一):langchain+ollama+llama3/qwen2

1、使用AI的一个常用场景就是&#xff0c;接收人类的语言&#xff0c;识别人类的意图&#xff0c;最终进行相关的业务处理&#xff0c;这就是设计Tool Call / Function Call的初衷。 2、现在一般都说Tool Call&#xff0c;以前常叫Function Call&#xff0c;不要纠结。 一、安…

Unable to get expected results using BM25 or any search functions in Weaviate

题意&#xff1a;使用 Weaviate 中的 BM25 或任何搜索函数都无法获得预期结果 问题背景&#xff1a; I have created a collection in Weaviate, and ingested some documents into the Weaviate database using LlamaIndex. When I used the default search, I found that it…

【管理咨询宝藏137】RB大型卡车集团供应链体系优化设计方案中期汇报

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏137】RB大型卡车集团供应链体系优化设计方案中期汇报 【格式】PDF版本 【关键词】罗兰贝格、供应链管理、运营提升 【核心观点】 - 甲方采取销售…

高精度除法的实现

高精度除法与高精度加法的定义、前置过程都是大致相同的&#xff0c;如果想了解具体内容&#xff0c;可以移步至我的这篇博客&#xff1a;高精度加法计算的实现 在这里就不再详细讲解&#xff0c;只讲解主体过程qwq 主体过程 高精度除法的原理和小学学习的竖式除法是一样的。 …

统信系统实战(2):安装redis

在系统中未发现redis&#xff0c;需要安装。 网上资料上说需要去redis官网下载&#xff0c;但是发现不管是github账号还是自己注册的sso账号&#xff0c;都各种提示有问题。 继续找资料&#xff0c;发现可以直接通过下载链接下载&#xff0c;指令如下&#xff1a; wget http…

django学习入门系列之第三点《position》

文章目录 fixed应用案例 固定窗口案例 对话框relative与absolute往期回顾 CSS 中的 position 属性用来设置元素在页面中的位置&#xff0c;通过该属性您可以把任何属性放置在任何您认为合适的位置。 ​   可以简单的理解成&#xff0c;写上这个之后&#xff0c;他不管你前面…

52、基于K 均值聚类实现基于颜色的分割(matlab)

1、K 均值聚类实现基于颜色的分割原理及流程 K 均值聚类是一种常用的聚类算法&#xff0c;通过将数据点分配到 K 个簇中&#xff0c;每个簇的中心代表簇的平均值来实现聚类的目的。 基于颜色的分割的原理是利用像素的颜色信息来对图像进行分割。首先需要将图像的每个像素点表…

【C语言】--操作符详解

&#x1f32d;个人主页: 起名字真南 &#x1f37f;个人专栏:【数据结构初阶】 【C语言】 目录 1 算术操作符1.1 和 -1.2 *1.3 /1.4 % 2 赋值操作符 &#xff1a;2.1 复合赋值符 3 单目操作符3.1 和- - 4 强制类型转换5 printf 和 scanf5.1 printf5.1.1 基本用法5.1.2 占位符5.…

AI 音乐生成器 MusicGPT,同声传译StreamSpeech!Web短视频平台Sharine

AI 音乐生成器 MusicGPT&#xff0c;同声传译StreamSpeech!Web短视频平台Sharine。 项目简介 MusicGPT 是一款应用程序&#xff0c;允许在任何平台上以高性能方式本地运行最新的音乐生成 AI 模型&#xff0c;而无需安装 Python 或机器学习框架等严重依赖项。 目前它仅支持 Me…

MySQL中的存储引擎

介绍 存储引擎就是存储数据&#xff0c;建立索引&#xff0c;更新/查询数据等技术的实现方式。存储引擎是基于表的&#xff0c;而不是基于库的&#xff0c;所以存储引擎也可以称为表类型&#xff08;即一个数据库下的表可以选择不同的存储引擎&#xff09;。 1. 如何查看一个…

一些指标的学习

1.平均倒数排名&#xff08;MRR&#xff09; 1.定义 MRR 是衡量检索系统返回的结果列表中第一个相关结果位置的指标。具体来说&#xff0c;它是所有查询倒数排名的平均值。 2.计算步骤 对每个查询&#xff0c;找到第一个正确答案在结果列表中的排名 &#x1d445;&#x1d44…

Python数据库数据的读取

数据库数据的读取 绝大多数公司都会选择将数据存入数据库中&#xff0c;因为数据库既可以存放海量数据&#xff0c;又可以非常便捷地实现数据的查询。本节将以MySQL和SQL Server为例&#xff0c;教会读者如何使用Pandas模块和对应的数据库模块&#xff08;分别是pymysql模块和…

金融科技:重塑用户体验,驱动满意度飙升

随着科技的飞速发展&#xff0c;金融科技&#xff08;FinTech&#xff09;已经深入到我们生活的每一个角落&#xff0c;从日常支付到投资理财&#xff0c;再到跨境汇款&#xff0c;它都在悄无声息地改变着我们的金融行为。而在这背后一个不可忽视的驱动力就是金融科技对用户体验…