前言
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、特征
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类进行各种设置(如默认分隔符、默认行尾和格式等)。
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);
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 编辑过