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

  • 相关阅读:
    【刷题笔记9.25】LeetCode:相交链表
    mysqldump --where参数的变化
    【Unity3D】UI Toolkit样式选择器
    如何传输文件流给前端
    2022-kaggle-nlp赛事:Feedback Prize - English Language Learning
    《动手学深度学习 Pytorch版》 8.5 循环神经网络的从零开始实现
    Packet Tracer - 排除单区域 OSPFv2 故障
    Qt定时器
    软考 系统架构设计师系列知识点之边缘计算(5)
    CEF 桌面软件开发实战
  • 原文地址:https://blog.csdn.net/daremeself/article/details/139469396
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号