LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

使用 FG.CsvParser 简化C#的CSV操作

admin
2025年2月16日 10:4 本文热度 402

前言

CSV 文件以纯文本形式存储表格数据,每行代表一条记录,各字段之间通常以逗号作为分隔符。但在实际应用中,也可能使用分号、制表符等其他字符作为分隔符。它被广泛应用于数据存储和交换。在软件开发中,使用 CSV 文件是常见任务。本文将介绍 FG.CsvParser 的使用方法。

FG.CsvParser

1、概述

FG.CsvParser 是 .NET 三方库,它可以运行在 .NET Core 和 .NET Framework 中, 它旨在使读取、写入和查询 CSV 文件变得简单高效。凭借其灵活的 API 和广泛的配置选项,FG.CsvParser 也是处理CSV文件不错的类库。

// github 地址https://github.com/fermanquliyev/FG.CsvParser

2、特征

  • 读取文件: 将 CSV 内容转换为 JSON 或强类型对象列表;

  • 写入文件: 轻松为文件编写 CSV 内容或附加到现有文件;

  • 高度可配置:  可调整解析选项(如分隔符、行分隔符和编码);

  • 查询数据: 使用自定义筛选条件高效查询 CSV 内容;

3、使用要求

在C#中使用 FG.CsvParser 库读取和解析CSV文件,首先需要安装 FG.CsvParser 库。我们通过 NuGet 包管理器来安装或通过指令方式安装。

// 包管理控制台PM> Install-Package FG.CsvParser// .NET 命令行控制台> dotnet add package FG.CsvParser

安装完成后,我们就可以引入FG.CsvHelper 命名空间,后续根据提供的API进行读写文件。

4、配置信息

FG.CsvHelper 的配置非常灵活,可以通过CsvParserConfiguration类进行各种设置(如默认分隔符、默认行尾和格式等)。

  • Delimiter:指定字段分隔符,默认为逗号。

  • HasHeader:指定CSV文件是否有标题记录。

  • RowSplitter: *** 指定行拆分器。

  • Encoding:指定编码格式。

var configuration = new CsvParserConfiguration{    // 是否有标题记录    HasHeader = true,    // 指定字段分隔符    Delimitter = ';',    // 换行    RowSplitter = "\r\n",    // 指定编码格式    Encoding = Encoding.UTF8,};

示例了解

1、Csv 文件内容

ID,Name,Barcode,Category,Description10001,Apple,A202502150001,fruit,红富士苹果10002,Grape,G202502152003,fruit,阳光葡萄

2、创建实例

使用默认设置创建实例,打开CSV文件。

string csvPath = string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "product.csv");var parser = CsvParser.OpenFile(csvPath);
使用自定义配置创建实例,打开CSV文件。
string csvPath = string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "product.csv");// 打开带有标题行的文件var parser = CsvParser.OpenFile(csvPath,hasHeader: true);
string csvPath = string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "product.csv");var configuration = new CsvParserConfiguration{    HasHeader = true,    Delimitter = ',',    RowSplitter = "\r\n",    Encoding = Encoding.UTF8};var parser = CsvParser.OpenFile(csvPath,configuration);

3、读取内容

定义一个Product类。

public class Product{    [CsvColumn("ID")] // 使用特性,用于配置字段的映射和处理方式    public int Id { get; set; }    public string Name { get; set; }    public string Barcode { get; set; }    public string Category { get; set; }    public string Description { get; set; }}

将 CSV 内容转换为 JSON 格式内容。

static async Task Main(string[] args){    var configuration = new CsvParserConfiguration    {        // 是否有标题记录        HasHeader = true,        // 指定字段分隔符        Delimitter = ';',        // 换行        RowSplitter = "\r\n",        // 指定编码格式        Encoding = Encoding.UTF8,    };    string csvPath = string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "product.csv");    var parser = CsvParser.OpenFile(csvPath, configuration);    string? jsonContent = await parser.ReadAsJson();    Console.WriteLine(jsonContent);    Console.Read();}

将 CSV 内容转换为对象列表。

static async Task Main(string[] args){    string csvPath = string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "product.csv");    var parser = CsvParser.OpenFile(csvPath, hasHeader: true);    List<Product> productList = await parser.ReadAs<Product>();    foreach (var data in productList)    {        Console.WriteLine($"ID:{data.Id}, Name:{data.Name}, Barcode:{data.Barcode},Category:{data.Category},Description:{data.Description}");    }    Console.Read();}

4、写入内容

通过将字符串内容写写入文件。

static async Task Main(string[] args){    string csvPath = string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "product.csv");    var parser = CsvParser.OpenFile(csvPath, hasHeader: true);    string csvContent = "5001,Snakehead,F2025021550001,Fish,黑鱼\r\n";    await parser.WriteAsync(csvContent,append:false);    Console.Read();}

使用对象列表,并将其写入文件。

static async Task Main(string[] args){    string csvPath = string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "fishProduct.csv");    var parser = CsvParser.OpenFile(csvPath, hasHeader: false);    var records = new List<Product>    {        new Product { Id = 5001, Name = "Snakehead",Barcode="F2025021550001",Category="Fish",Description="黑鱼"},        new Product { Id = 6001, Name = "Carp",Barcode="F2025021550001",Category="Fish",Description="鲤鱼" },    };    await parser.WriteAsync(records, append: false);    Console.Read();}

5、查询内容

可以使用自定义筛选条件查询数据,以仅提取所需的信息。

static async Task Main(string[] args){    string csvPath = string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "Product.csv");    using var parser = CsvParser.OpenFile(csvPath, new CsvParserConfiguration    {        HasHeader = true,        Delimitter = ',',        RowSplitter = "\r\n",        Encoding = Encoding.UTF8    });    await foreach (Product item in parser.Query<Product>(data => data.Name== "Apple"))    {        Console.WriteLine($"ID:{item.Id}, Name:{item.Name}, Barcode:{item.Barcode},Category:{item.Category},Description:{item.Description}");    }    Console.Read();}

小结

FG.CsvParser 通过提供干净直观的 API 简化了 CSV 文件的使用,提供了高效且灵活性的数据的方法。


阅读原文:原文链接


该文章在 2025/2/17 12:28:07 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved