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开源的强大日期和时间库

相关推荐
LZQqqqqo40 分钟前
C# 中 ArrayList动态数组、List<T>列表与 Dictionary<T Key, T Value>字典的深度对比
windows·c#·list
季春二九42 分钟前
Windows 11 首次开机引导(OOBE 阶段)跳过登录微软账户,创建本地账户
windows·microsoft
芥子沫2 小时前
Jenkins常见问题及解决方法
windows·https·jenkins
cpsvps_net18 小时前
美国服务器环境下Windows容器工作负载智能弹性伸缩
windows
甄超锋19 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
cpsvps21 小时前
美国服务器环境下Windows容器工作负载基于指标的自动扩缩
windows
网硕互联的小客服1 天前
Apache 如何支持SHTML(SSI)的配置方法
运维·服务器·网络·windows·php
etcix1 天前
implement copy file content to clipboard on Windows
windows·stm32·单片机
许泽宇的技术分享1 天前
Windows MCP.Net:基于.NET的Windows桌面自动化MCP服务器深度解析
windows·自动化·.net
非凡ghost1 天前
AMS PhotoMaster:全方位提升你的照片编辑体验
windows·学习·信息可视化·软件需求