IRONXLの使用

CSVファイルをC#でリストに変換する方法

公開済み 2024年1月27日
共有:

以下は初心者向けチュートリアルです、どのようにやるか見てみましょうCSVファイルを読み取るにしている。C# のリストusing the can be translated into Japanese as:

を使用して.IronXLライブラリ。 さて、これはどのプログラミング言語でも知っておくべき基本的な事項の一つです。CSVファイルはデータを保存し、あるシステムやアプリケーションから別のシステムやアプリケーションに転送するための非常に一般的な方法です。 プロジェクトの設定からCSVファイルの効率的な解析まで、すべてをカバーします。

C#でCSVファイルをリストに変換する方法

  1. Visual StudioでC#コンソールプロジェクトを作成します。

  2. NuGetパッケージマネージャーを使用してC# CSVライブラリをインストールします。

  3. WorkBook.LoadCSV メソッドを使用してCSVファイルを読み込みます。

  4. ファイルからデータ値を読み取り、リストに入力する。

  5. リストをコンソールに印刷します。

プロジェクトの設定

ステップ 1: 新しい C# プロジェクトを作成する

  1. Visual Studio を開く: コンピューターで Visual Studio を起動します。

  2. 新しいプロジェクトを作成:「Create a new project」をクリックします。 これは、プロジェクトの種類を選択できるウィンドウを開きます。

  3. プロジェクトタイプを選択: 「Console App」を選択(.NET Core(ドットネット コア))簡潔さのために、プロジェクトのタイプとして選択します。

  4. プロジェクトの名前を付ける: プロジェクトの名前を CSVFileReader にしてください。

  5. 場所を選択: このプロジェクトを保存するために、デバイス上の適切な場所を選択します。

  6. プロジェクトの生成:新しいC#プロジェクトを初期化するために「Create」をクリックします。

ステップ2:IronXLライブラリのインストール

  1. NuGet パッケージ マネージャーを開く: Visual Studio で「ツール」メニューに移動し、「NuGet パッケージ マネージャー」を選択し、「ソリューションの NuGet パッケージの管理...」を選びます。

  2. IronXLを探す: 「参照」タブをクリックして「IronXL.Excel」を検索してください。

    CSVファイルをリストに変換する方法(C#の場合): 図1 - IronXL

  3. IronXLのインストール: 検索結果からIronXLパッケージを見つけて、それを選択し、「インストール」をクリックします。ライセンス契約に同意し、変更内容を確認することを確実にしてください。

  4. インストールの確認: インストール後、プロジェクトの参照にIronXLが表示されていることを確認してください。

    現在、CSVFileReaderプロジェクトはIronXLライブラリを使用してセットアップされ、C#でCSVファイルの読み取りと処理を開始する準備が整っています。 このセットアップは、このチュートリアルの後続セクションで行うCSV読み取りタスクの基盤を形成します。

C#でCSVファイルを解析および処理する

プロジェクトのセットアップとIronXLライブラリのインストールが完了したので、CSVファイルの解析と処理に焦点を当てましょう。 CSVFileReader プロジェクトで自動的に生成される Program.cs ファイルで作業します。

ステップ1:ファイルパスの指定

データを読み取る前に、CSVファイルの場所を特定する必要があります。 Main メソッドでファイルパスを格納するための変数を定義します。

string filename = "csvfile.csv"; // Replace with your actual file path
string filename = "csvfile.csv"; // Replace with your actual file path
Dim filename As String = "csvfile.csv" ' Replace with your actual file path
VB   C#

ステップ2:CSVファイルの読み込み

IronXLを使用すると、CSVファイルの読み込みが簡単になります。WorkBook.LoadCSVメソッドを使用して、CSVファイルをWorkBookオブジェクトに読み込みます。

var csv = WorkBook.LoadCSV(filename);
var csv = WorkBook.LoadCSV(filename);
Dim csv = WorkBook.LoadCSV(filename)
VB   C#

ステップ3: データ構造の定義

以下のようにCSVファイル内のデータ構造を表すクラスを作成します。例えば、CSVに人に関する情報が含まれている場合、「Person」クラスを次のように定義します:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
Public Class Person
	Public Property Name() As String
	Public Property Age() As Integer
End Class
VB   C#

ステップ4: CSVデータの解析

次のステップでは、CSVファイルを解析して`Listデータと共に。 CSVを読み込むためにIronXLを使用しています。CSVの各行やvar lineを正しく処理し、ヘッダーや空行の可能性を考慮することが重要です。 コードの詳細な内訳は次のとおりです:

List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets [0].Rows)
{
    if (isFirstRow)
    {
        isFirstRow = false; // Set the flag to false after skipping the first row
        continue;
    }
    if (row.IsEmpty) continue; // Skip empty rows
    var cells = row.ToArray();
    var person = new Person()
    {
        Name = cells [0].StringValue,
        Age = int.Parse(cells [1].StringValue) // Ensure this is a numeric value
    };
    people.Add(person);
}
List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets [0].Rows)
{
    if (isFirstRow)
    {
        isFirstRow = false; // Set the flag to false after skipping the first row
        continue;
    }
    if (row.IsEmpty) continue; // Skip empty rows
    var cells = row.ToArray();
    var person = new Person()
    {
        Name = cells [0].StringValue,
        Age = int.Parse(cells [1].StringValue) // Ensure this is a numeric value
    };
    people.Add(person);
}
Dim people As New List(Of Person)()
Dim isFirstRow As Boolean = True ' Add a flag to check for the first row
For Each row In csv.WorkSheets (0).Rows
	If isFirstRow Then
		isFirstRow = False ' Set the flag to false after skipping the first row
		Continue For
	End If
	If row.IsEmpty Then
		Continue For ' Skip empty rows
	End If
	Dim cells = row.ToArray()
	Dim person As New Person() With {
		.Name = cells (0).StringValue,
		.Age = Integer.Parse(cells (1).StringValue)
	}
	people.Add(person)
Next row
VB   C#

この解析プロセスでは、まずListを初期化します。解析されたデータを保存し、CSVファイルのヘッダ行をスキップするためにブールフラグ isFirstRow を使用します。 foreachループは、CSVファイルの各行を順に繰り返し処理します。最初の繰り返しでは、ヘッダー行が識別され、スキップされるため、データ行のみが処理されます。 次に、row.IsEmptyを使用して、各行が空でないことを確認します。 このステップは、空行によるパースエラーを避けるために重要です。

各データ行ごとに、その行をセルの配列に変換します。(row.ToArray()もちろん、英語のテキストを教えていただけますでしょうか?)次に、このデータを使用してPersonオブジェクトを作成します。 「Age」文字列を整数に変換するなど、データ型を正しく分析および変換することは重要です。 解析されたPersonオブジェクトは、その後people` リストに追加されます。このアプローチにより、有効なデータ行のみが処理および保存されることが保証され、数値列における非数値文字列や予期しない空行といった潜在的な問題が効果的に対処されます。

ステップ5: データの表示

CSVデータを List に解析した後、次に重要なステップは、データを表示し確認することです。 これにより、解析が成功したことを確認するだけでなく、出力を観察して迅速にデータ品質チェックを行うこともできます。 以下のように実装できます:

foreach (var person in people)
{
    Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
foreach (var person in people)
{
    Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
For Each person In people
	Console.WriteLine($"Name: {person.Name}, Age: {person.Age}")
Next person
VB   C#

以下は完全な Program.cs コードです:

using IronXL;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main(string [] args)
    {
        string filename = @"C:\Users\tayya\Downloads\sample_data.csv"; // Replace with your actual file path
        var csv = WorkBook.LoadCSV(filename);
        List<Person> people = new List<Person>();
        bool isFirstRow = true; // Add a flag to check for the first row
        foreach (var row in csv.WorkSheets [0].Rows)
        {
            if (isFirstRow)
            {
                isFirstRow = false; // Set the flag to false after skipping the first row
                continue;
            }
            if (row.IsEmpty) continue; // Skip empty rows
            var cells = row.ToArray();
            var person = new Person()
            {
                Name = cells [0].StringValue,
                Age = int.Parse(cells [1].StringValue) // Ensure this is a numeric value
            };
            people.Add(person);
        }
        foreach (var person in people)
        {
            Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
        }
    }
}
using IronXL;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main(string [] args)
    {
        string filename = @"C:\Users\tayya\Downloads\sample_data.csv"; // Replace with your actual file path
        var csv = WorkBook.LoadCSV(filename);
        List<Person> people = new List<Person>();
        bool isFirstRow = true; // Add a flag to check for the first row
        foreach (var row in csv.WorkSheets [0].Rows)
        {
            if (isFirstRow)
            {
                isFirstRow = false; // Set the flag to false after skipping the first row
                continue;
            }
            if (row.IsEmpty) continue; // Skip empty rows
            var cells = row.ToArray();
            var person = new Person()
            {
                Name = cells [0].StringValue,
                Age = int.Parse(cells [1].StringValue) // Ensure this is a numeric value
            };
            people.Add(person);
        }
        foreach (var person in people)
        {
            Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
        }
    }
}
Imports IronXL

Public Class Person
	Public Property Name() As String
	Public Property Age() As Integer
End Class

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim filename As String = "C:\Users\tayya\Downloads\sample_data.csv" ' Replace with your actual file path
		Dim csv = WorkBook.LoadCSV(filename)
		Dim people As New List(Of Person)()
		Dim isFirstRow As Boolean = True ' Add a flag to check for the first row
		For Each row In csv.WorkSheets (0).Rows
			If isFirstRow Then
				isFirstRow = False ' Set the flag to false after skipping the first row
				Continue For
			End If
			If row.IsEmpty Then
				Continue For ' Skip empty rows
			End If
			Dim cells = row.ToArray()
			Dim person As New Person() With {
				.Name = cells (0).StringValue,
				.Age = Integer.Parse(cells (1).StringValue)
			}
			people.Add(person)
		Next row
		For Each person In people
			Console.WriteLine($"Name: {person.Name}, Age: {person.Age}")
		Next person
	End Sub
End Class
VB   C#

コードの出力

ファイルを実行すると、コンソールにリストのデータが表示されます。

CSVファイルをC#でリストに変換する方法: 図2 - リスト出力

異なるデータ型の処理

CSVファイル内の様々なデータ型を取り扱う際には、各データ列の特定の型に合わせてパースロジックを調整することが重要です。 Person クラスの例では、Name は文字列であり、StringValue を使用して直接割り当てることができますが、Age のような数値フィールドは、Int32.Parse または Convert.ToInt32 を使用して文字列から整数に変換する必要があります。 これを行うことは、型の不一致エラーを回避するために不可欠です。

より複雑なデータ型、例えば日付の場合、文字列で表現された日付をDateTimeオブジェクトに変換するためにDateTime.Parseを使用してください。 CSVファイルで使用されている日付形式に注意し、コードで期待される形式と一致していることを確認することが重要です。 日付形式の不一致は、解析エラーやデータの誤解を引き起こす可能性があります。

結論

CSVファイルのデータをIronXLを使用してC#で読み取り、解析し、表示する方法を学びました。 このアプローチは、さまざまな種類のデータ構造やファイル形式に対して使用することができます。 したがって、これはC#を主な言語として選択するすべての開発者にとって、非常に有用なスキルを表しています。

IronXLは、無料試用ユーザーがその機能を体験するために。 試用期間が終了した後、IronXL のライセンスは $liteLicense から始まります。

例外やエッジケースに対処することで、異なるデータ型を管理し、大きなファイルを扱う際に、より堅牢なコードを記述する必要があります。 IronXLのより多くの機能を試し、探求して、C#でのデータ処理を強化し続けてください。 コーディングを楽しんでください!

< 以前
C#でCSVをデータテーブルにインポートする方法
次へ >
VB .NETでExcelファイルを保存する方法