C# で CSV ファイルを解析する

  1. C# の TextFieldParser クラスで CSV ファイルを解析する
  2. C# の FileHelpers ライブラリを使用して CSV ファイルを解析する

このチュートリアルでは、C# で CSV ファイルを解析する方法について説明します。

C# の TextFieldParser クラスで CSV ファイルを解析する

TextFieldParser クラスを使用するには、C# コードで Microsoft.VisualBasic.dll を参照する必要があります。TextFieldParser クラスには、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 ループを使用して、CSV ファイルを textFieldParser.EndofData で最後まで読み取りました。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 クラスのオブジェクトの配列に保存します。

関連記事 - Csharp CSV

  • C# で CSV ファイルを読み込み、その値を配列に格納する