码农知识堂 - 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开源的强大日期和时间库

  • 相关阅读:
    创建husky规范前端项目
    C#.Net筑基-String字符串超全总结 [深度好文]
    Base64、AES、MD5的区别与应用
    01Linux中安装Nginx的步骤
    Allegro 172版本自动放置层叠
    项目篇——java文档搜索引擎
    docker高效搭建本地开发环境
    RocketMQ入门指南:从零开始学习分布式消息队列技术
    【CSS】CSS 属性计算过程
    shell之函数和数组(案例分析)
  • 原文地址:https://blog.csdn.net/daremeself/article/details/139469396
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号