在 C# 中解析 CSV 文件

Muhammad Maisam Abbas 2024年2月16日
  1. 在 C# 中使用 TextFieldParser 类解析 CSV 文件
  2. 使用 C# 中的 FileHelpers 库解析 CSV 文件
在 C# 中解析 CSV 文件

本教程将讨论在 C# 中解析 CSV 文件的方法。

在 C# 中使用 TextFieldParser 类解析 CSV 文件

要使用 TextFieldParser,我们必须在我们的 C# 代码中引用 Microsoft.VisualBasic.dllTextFieldParser 类包含许多用于解析 C# 中的结构化文本文件的方法。通过使用 TextFieldParser 类中的 SetDelimiters() 函数将分隔符设置为 ,,我们可以使用 TextFieldParser 类读取 CSV 文件。以下代码示例向我们展示了如何使用 C# 中的 TextFieldParser 类解析 CSV 文件。

using System;
using Microsoft.VisualBasic.FileIO;

namespace parse_csv {
  class Program {
    static void Main(string[] args) {
      using (TextFieldParser textFieldParser = new TextFieldParser(@"C:\File\Sheet1.csv")) {
        textFieldParser.TextFieldType = FieldType.Delimited;
        textFieldParser.SetDelimiters(",");
        while (!textFieldParser.EndOfData) {
          string[] rows = textFieldParser.ReadFields();
        }
      }
    }
  }
}

在上面的代码中,我们通过在构造函数中指定 CSV 文件的路径,初始化了 TextFieldParser 类的实例 textFieldParser。然后,我们将文本字段类型设置为使用 textFieldParser.TextFieldType = FieldType.Delimited 进行分隔,并通过 textFieldParser.SetDelimiter(',') 函数将 , 设置为分隔符。然后,我们使用 while 循环以 textFieldParser.EndofData 读取 CSV 文件至末尾。我们使用 ReadFields() 函数将数据存储在字符串数组中。

使用 C# 中的 FileHelpers 库解析 CSV 文件

FileHelpers用于在 C# 中读写数据到文件、流和字符串。它是一个第三方库,未预装有 .NET 框架。我们可以通过在 Visual Studio IDE 的 NuGet 程序包管理器中搜索它来轻松安装它。我们可以使用 FileHelpersEngine 类从 C# 中的 CSV 文件中解析数据。FileHelperEngine 类将数据从文件中获取到 C# 中的类对象中。因此,我们首先要创建一个模型类,该模型类可以保存文件中的数据。该类将包含代表 CSV 文件中列的字段。我们可以使用 [DelimitedRecord(",")] 来指定这里使用 , 作为分隔符。我们可以使用 ReadFile(path) 函数从指定路径中的文件中读取类对象数组中的数据。以下代码示例向我们展示了如何使用 C# 中的 FileHelpers 库来解析 CSV 文件。

using FileHelpers;
using System;
namespace parse_csv {
  [DelimitedRecord(",")]
  public class Record {
    public string Name;

    public string Age;
  }
  class Program {
    static void Main(string[] args) {
      var fileHelperEngine = new FileHelperEngine<Record>();
      var records = fileHelperEngine.ReadFile(@"C:\File\records.csv");

      foreach (var record in records) {
        Console.WriteLine(record.Name);
        Console.WriteLine(record.Age);
      }
    }
  }
}

输出:

Name
Age
MMA
22
SDA
19
SHA
11

在上面的代码中,我们读取 C:\File\records.csv 文件中的数据,并使用 C# 中的 FileHelpers 库将其保存在 Record 类的对象数组中。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

相关文章 - Csharp CSV