在 C# 中解析 CSV 檔案

Muhammad Maisam Abbas 2023年1月30日 2021年4月29日
  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