码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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
    {
        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);
    }
    
    /// 
    /// 模型定义
    /// 
    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();
        var records = csv.GetRecords();
        foreach(var record in records)
        {
            Console.WriteLine("Id:" + record.Id + ", Name:"+ record.Name);
        }
    }
    
    /// 
    /// 映射规则
    /// 
    public class FooMap : ClassMap
    {
        public FooMap()
        {
            Map(m => m.Id);
            Map(m => m.Name);
        }
    }
    
    /// 
    /// 模型定义
    /// 
    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开源的强大日期和时间库

  • 相关阅读:
    数据结构:栈
    Win11快捷复制粘贴不能用怎么办?Win11快捷复制粘贴不能用
    vue组件使用与父子传递
    Jmeter —— jmeter参数化实现
    MyBatis select标签的简介说明
    cmake命令
    【bioinfo】sam文件可选区域字段(Optional Feild)含义
    支付宝 v3 验签如何实现
    nginx部署web项目(跟着搞不出来,来砍我)
    c++异常处理
  • 原文地址:https://blog.csdn.net/daremeself/article/details/139469396
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号