C# で 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
クラスのオブジェクトの配列に保存します。
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