如何在 C# 中读取 CSV 文件并将值存储到数组中?

读取 CSV 文件的背景

CSV(Comma-Separated Values)文件是一种常见的文件格式,其以逗号作为字段之间的分隔符。许多应用程序和系统会使用 CSV 文件来保存数据并进行交换。

在 C# 中,我们可以使用一些现有的库来读取 CSV 文件,同时使用数组来保存读取的数据。本文将介绍如何使用 CsvHelper 库来读取 CSV 文件并将值存储到数组中。

使用 CsvHelper 库读取 CSV 文件的准备工作

在开始使用 CsvHelper 库之前,需要进行一些准备工作:

1. 引用 CsvHelper 库

首先,需要在项目中引用 CsvHelper 库。可以通过 NuGet 包管理器来安装该库。

Install-Package CsvHelper

或者在 Visual Studio 中通过“管理 NuGet 程序包”来进行安装。

2. 创建 CSV 文件

为了演示如何读取 CSV 文件,我们需要先创建一个 CSV 文件,使用逗号来分隔每个字段。可以使用 Excel 或其他电子表格软件来创建 CSV 文件。假设我们创建了一个名为“data.csv”的文件,其内容如下:

Name, Age, Gender

Tom, 25, Male

Lily, 28, Female

Bob, 30, Male

使用 CsvHelper 库读取 CSV 文件

1. 创建实体类

CsvHelper 库可以将 CSV 文件中的每一行数据转换成一个实体类的对象。因此,我们需要先创建一个实体类来映射 CSV 文件中的每一行数据。

以 data.csv 文件为例,我们可以创建以下实体类:

public class Person

{

public string Name { get; set; }

public int Age { get; set; }

public string Gender { get; set; }

}

实体类中的属性名称需要与 CSV 文件的列名相同,属性类型需要与 CSV 文件中的数据类型相匹配。在以上示例中,Name 和 Gender 是字符串类型,Age 是整数类型。

2. 读取 CSV 文件

在创建好实体类之后,我们可以使用 CsvHelper 库来读取 CSV 文件。下面是读取 data.csv 文件并将值存储到数组中的示例代码:

using CsvHelper;

using System.Collections.Generic;

using System.IO;

public class CsvReader

{

public List<Person> ReadCsvFile()

{

List<Person> people = new List<Person>();

using (var reader = new StreamReader("data.csv"))

using (var csv = new CsvReader(reader))

{

csv.Configuration.HeaderValidated = null;

csv.Configuration.MissingFieldFound = null;

var records = csv.GetRecords<Person>();

foreach (var record in records)

{

people.Add(record);

}

}

return people;

}

}

上述代码中,使用 StreamReader 打开 data.csv 文件并将其传入 CsvReader 对象中。CsvHelper 库会自动解析 CSV 文件并将每一行数据转换成 Person 类的对象。在读取时,需要使用 CsvReader 对象的 GetRecords<T>() 方法,其中 T 为实体类的类型。该方法返回一个 IEnumerable<T> 对象,我们可以使用 foreach 循环遍历这个对象以获取每个 Person 对象。

在上面的代码中,我们还设置了 CsvReader 对象的 HeaderValidated 和 MissingFieldFound 属性,用于处理 CSV 文件中的一些异常情况。如果不设置这两个属性,CsvHelper 库会抛出异常。

使用数组存储 CSV 文件中的值

读取 CSV 文件并将值存储到数组中是一个很常见的需求。我们可以将每个 Person 对象的属性值存储到一个二维数组中,然后可以使用索引来访问这些值。

下面是示例代码:

public class CsvToArray

{

public string[,] ReadCsvFile()

{

var people = new List<Person>();

var result = new string[4, 3];

using (var reader = new StreamReader("data.csv"))

using (var csv = new CsvReader(reader))

{

csv.Configuration.HeaderValidated = null;

csv.Configuration.MissingFieldFound = null;

var records = csv.GetRecords<Person>();

int i = 0;

foreach (var record in records)

{

people.Add(record);

result[i, 0] = record.Name;

result[i, 1] = record.Age.ToString();

result[i, 2] = record.Gender;

i++;

}

}

return result;

}

}

在上面的代码中,我们创建了一个 string 类型的二维数组 result,其维度分别为 4 和 3。我们先遍历 CsvReader 对象的 every line of records 子句,每次循环中将 Person 对象的值存储到该对象的数组中。i 的值表示当前遍历到的行数,用于指定数组的行下标。

总结

本文介绍了如何使用 CsvHelper 库在 C# 中读取 CSV 文件,并将每行的数据存储到实体类或数组中。使用 CsvHelper 库可以方便快捷地读取和处理 CSV 文件,同时可以避免一些复杂的数据转换操作。希望本文对大家有所帮助。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签