前言
在日常开发中使用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 = "长沙市天心区" },
new StudentInfo { ID = 11, Name = "陈十一", Age = 22, Class = "终极四班", Gender = "男", Address = "天津市和平区" },
new StudentInfo { ID = 12, Name = "黄十二", Age = 21, Class = "终极四班", Gender = "女", Address = "西安市雁塔区" },
new StudentInfo { ID = 13, Name = "刘十三", Age = 24, Class = "终极四班", Gender = "男", Address = "苏州市姑苏区" },
new StudentInfo { ID = 14, Name = "郑十四", Age = 20, Class = "终极四班", Gender = "女", Address = "东莞市莞城区" },
new StudentInfo { ID = 15, Name = "冯十五", Age = 23, Class = "终极五班", Gender = "男", Address = "佛山市禅城区" },
new StudentInfo { ID = 16, Name = "褚十六", Age = 25, Class = "终极五班", Gender = "女", Address = "厦门市思明区" },
new StudentInfo { ID = 17, Name = "卫十七", Age = 22, Class = "终极五班", Gender = "男", Address = "青岛市市南区" },
new StudentInfo { ID = 18, Name = "蒋十八", Age = 21, Class = "终极五班", Gender = "女", Address = "大连市中山区" },
new StudentInfo { ID = 19, Name = "沈十九", Age = 24, Class = "终极六班", Gender = "男", Address = "宁波市海曙区" },
new StudentInfo { ID = 20, Name = "韩二十", Age = 20, 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();
}
DotNetGuide编程学院
DotNetGuide编程学院是一个专注于C#/.NET/.NET Core学习、工作、面试干货和实战教程分享的知识星球!当然这里不仅仅只有C#/.NET/.NET Core还有前端、云原生(Docker,K8s)、分布式,微服务、实用工具、学习书籍、AIGC、AI赋能、求职和招聘资讯、热点资讯等多个领域,我们致力于构建一个积极向上、和谐友善的.NET技术交流、学习平台。无论您是初学者还是有丰富经验的开发者,我们都希望能为您提供更多的价值和成长机会。
加入后如果感觉不值得,3天内在知识星球APP右上角点击退出星球,可直接全额退款,无任何套路!
项目源码地址
更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。
- CsvHelper类库开源地址: https://github.com/JoshClose/CsvHelper
- 文章示例源码地址: https://github.com/YSGStudyHards/DotNetExercises/tree/master/CsvHelperExercise
优秀项目和框架精选
该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞 )。
- GitHub开源地址: https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md
- Gitee开源地址: https://gitee.com/ysgdaydayup/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md
- 免费开源的程序员简历模板 ===================================================================================================================================================
- 了解作者&获取更多学习资料 ======================================================================================================================================================================================================================================
- 程序员常用的开发工具软件推荐 =======================================================================================================================================================================================================================================
- 加入DotNetGuide技术社区交流群 =============================================================================================================================================================================================================================================
- C#/.NET/.NET Core推荐学习书籍
- C#/.NET/.NET Core学习视频汇总
- .NET/.NET Core ORM框架资源汇总 =================================================================================================================================================================================================================================================
- C#/.NET/.NET Core开发者学习路线集 ==================================================================================================================================================================================================================================================
- C#/.NET/.NET Core面试宝典(基础版)
- C#/.NET/.NET Core优秀项目和框架推荐
- C#/.NET/.NET Core学习、工作、面试指南
学习是一个永无止境的过程,你知道的越多,你不知道的也会越多,在有限的时间内坚持每天多学一点,你一定能成为你想要成为的那个人。不积跬步无以至千里,不积小流无以成江海!