CsvHelper:一个轻便高性能的Csv文件读写操作开源库!

Csv是一种非常常见的文件格式,采用纯文本格式,不依赖于任何特定的软件或数据库,且文件体积小,易于使用。平常项目开发中,需要都会采用这种格式,这就涉及到Csv文件的读写操作。

下面介绍一个轻便高性能的Csv文件读写操作开源库。

01 项目简介

CsvHelper 是一个.Net开源库,这是一个强大且易于使用的工具,使得开发者可以非常方便处理 Csv文件。方便我们应用于数据导入导出、数据迁移、报告生成等一些应用场景。

02 项目特点

**简单的API:**提供了直观的 API 来读取和写入 CSV 文件,使得处理 CSV 数据变得更加容易。

**灵活的映射:**可以轻松地将 CSV 数据映射到 .NET 对象,反之亦然,这使得数据交换和持久化变得简单。

**强大的解析能力:**支持复杂的 CSV 文件解析,包括带标题的文件、动态类型处理等。

**广泛的支持:**适用于多种 .NET 平台,基于.NET Standard 2.0开发的。

03 使用方法

1、安装依赖库

复制代码
Install-Package CsvHelper

2、写入Csv文件

复制代码
using CsvHelper;
using System.Globalization;

//数据
var records = new List<Foo>
{
    new Foo { Id = 1, Name = "one" },
    new Foo { Id = 2, Name = "two" },
};

//写入文件
using (var writer = new StreamWriter(AppContext.BaseDirectory +  "file.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(records);
}

/// <summary>
/// 模型定义
/// </summary>
public class Foo
{
    public int Id { get; set; }
    public string Name { get; set; }
}

效果如下:

3、读取Csv文件

复制代码
using CsvHelper;
using CsvHelper.Configuration;
using CsvHelper.Configuration.Attributes;
using System.Globalization;

//读取文件
using (var reader = new StreamReader(AppContext.BaseDirectory + "file.csv"))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
    csv.Context.RegisterClassMap<FooMap>();
    var records = csv.GetRecords<Foo>();
    foreach(var record in records)
    {
        Console.WriteLine("Id:" + record.Id + ", Name:"+ record.Name);
    }
}

/// <summary>
/// 映射规则
/// </summary>
public class FooMap : ClassMap<Foo>
{
    public FooMap()
    {
        Map(m => m.Id);
        Map(m => m.Name);
    }
}

/// <summary>
/// 模型定义
/// </summary>
public class Foo
{
    public int Id { get; set; }

    public string Name { get; set; }
}

效果如下:

04 项目地址

https://github.com/JoshClose/CsvHelper

  • End -

推荐阅读

AutoFixture:.NET 的假数据生成工具

Coravel:一个可轻松实现任务调度、队列、邮件发送的开源项目

Plotly.NET:一个强大的、漂亮的.NET开源交互式图表库

OxyPlot:一个功能强大、漂亮.Net跨平台开源绘图库

NodaTime:一个.NET开源的强大日期和时间库

相关推荐
私人珍藏库8 小时前
[吾爱大神原创工具] QtScreenSwitcher[Win]一个现代化、极简、高颜值的多屏开关工具。
windows·工具·软件·win·多功能
competes9 小时前
慈善基金投资底层逻辑应用 顶层代码低代码配置平台开发结构方式数据存储模块
java·开发语言·数据库·windows·sql
零号全栈寒江独钓10 小时前
基于c/c++实现linux/windows跨平台获取ntp网络时间戳
linux·c语言·c++·windows
dyxal17 小时前
内网 Windows 离线安装 uv:极速 Python 包管理器的部署实战
windows·python·uv
stone082317 小时前
如何解决Windows硬盘变成了空白
windows
零号全栈寒江独钓18 小时前
基于c/c++实现linux/windows跨平台ntp时间戳服务器
linux·c语言·c++·windows
舒一笑19 小时前
Windows 下执行 pnpm install 报 EBUSY: resource busy or locked,我最后用这一招解决了
前端·windows·程序员
hERS EOUS20 小时前
Redis 下载与安装 教程 windows版
数据库·windows·redis
爱吃香蕉的阿豪21 小时前
Mac 远程操作 Windows 开发:ZeroTier + JetBrains 实战指南
windows·macos·zerotoer
YJlio1 天前
2026年4月18日60秒读懂世界:从神舟二十号出舱到L2新国标公示,今天最值得关注的6个信号
windows·python·django·计算机外设·电脑·outlook·eixv3