フッターコンテンツにスキップ
IRONXLの使用

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

この初心者向けチュートリアルでは、CSVファイルを読み込む方法をC#のリストに変換するためにIronXLライブラリを使用する方法を見ていきます。 CSVファイルはデータを保存し、システムやアプリケーション間で転送する非常に一般的な方法であるため、これはどのプログラミング言語でも知っておくべき基本的なことの一つです。 プロジェクトのセットアップから効果的にCSVファイルを解析する方法まで、すべてをカバーします。

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

  1. Visual StudioでC#コンソールプロジェクトを作成します。
  2. NuGetパッケージマネージャーを使用してC# CSVライブラリをインストールします。
  3. WorkBook.LoadCSVメソッドを使用してCSVファイルをロードします。
  4. ファイルからデータ値を読み込み、リストを構築します。
  5. コンソールにリストを表示します。

プロジェクトのセットアップ

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

  1. Visual Studio を開く:コンピューターで Visual Studio を起動します。 2.新しいプロジェクトを作成する: "新しいプロジェクトの作成"をクリックします。 これにより、プロジェクトの種類を選択できるウィンドウが開きます。 3.プロジェクト タイプの選択:簡単にするために、プロジェクト タイプとして"コンソール アプリ (.NET Core)"を選択します。 4.プロジェクトに名前を付けます。プロジェクトにCSVFileReader という名前を付けます。 5.場所の選択:このプロジェクトを保存するには、デバイス上の適切な場所を選択します。 6.プロジェクトを生成します。 "作成"をクリックして、新しい C# プロジェクトを初期化します。

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

  1. NuGet パッケージ マネージャーを開きます。Visual Studio で、[ツール] メニューに移動し、[NuGet パッケージ マネージャー] を選択して、[ソリューションの NuGet パッケージの管理...] を選択します。
  2. IronXL を参照します。 "参照"タブをクリックし、"IronXL.Excel"を検索します。

How to Convert CSV File Into List in C#: Figure 1 - IronXL

  1. IronXL をインストールします。検索結果から IronXL パッケージを見つけて選択し、"インストール"をクリックします。ライセンス契約に同意し、変更内容を確認してください。 4.インストールの確認:インストール後、プロジェクトの参照に IronXL が参照されているはずです。

CSVFileReaderプロジェクトはIronXLライブラリでセットアップされており、これでCSVファイルをC#で読み込んで処理を始める準備が整いました。 このセットアップは、チュートリアルの後半部分で行うCSV読取り作業の基礎を形成しています。

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
$vbLabelText   $csharpLabel

ステップ2: CSVファイルのロード

IronXLを使えばCSVファイルのロードは簡単です。WorkBook.LoadCSVメソッドを使って、CSVファイルをWorkBookオブジェクトに読み込みます。

var csv = WorkBook.LoadCSV(filename);
var csv = WorkBook.LoadCSV(filename);
$vbLabelText   $csharpLabel

ステップ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; }
}
$vbLabelText   $csharpLabel

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

このステップでは、CSVファイルを解析してList<Person>にデータを格納します。 IronXLを使用してCSVの読み取りを行い、ヘッダや潜在的空行を考慮してCSVの各行または列を正確に処理するポイントが肝要です。 コードの詳細な内訳は以下の通りです。

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);
}
$vbLabelText   $csharpLabel

この解析プロセスで、最初に解析済みデータを格納するためのList<Person>を初期化し、CSVファイルのヘッダ行をスキップするためにブールフラグisFirstRowを使用します。 foreachループはCSVファイルの各行を反復処理します。最初の反復中にヘッダ行が特定され、スキップされるため、データ行のみが処理されます。 row.IsEmptyを使って各行が空でないことを確認します。 これが空行でのパースエラーを避けるための重要なステップです。

各データ行に対して、行をセルの配列に変換(row.ToArray())し、このデータでPersonオブジェクトを作成します。 Age文字列を整数に変換するなど、データ型を正しく解析し変換することが非常に重要です。 パースされたPersonオブジェクトはpeopleリストに追加されます。このアプローチにより、有効なデータ行のみが処理され、数値列における非数値文字列や予期しない空行などの潜在的な問題を効果的に処理、格納することができます。

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

List<Person>にCSVデータを解析した後、次に重要なのはデータを表示して確認することです。 これにより、解析が成功したことを確認できるだけでなく、出力を観察し、簡単なデータ品質チェックを実施することもできます。 このように実装できます。

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}");
}
$vbLabelText   $csharpLabel

以下が完全なProgram.csコードです。

using IronXL;
using System;
using System.Collections.Generic;

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;
using System;
using System.Collections.Generic;

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}");
    }
}
$vbLabelText   $csharpLabel

コードの出力

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

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

異なるデータ型の扱い

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

日付のようなより複雑なデータ型については、DateTime.Parseを使って日付の文字列表現をDateTimeオブジェクトに変換します。 CSVファイルで使用される日付形式を認識し、コード内で期待される形式と一致させることが重要です。 一貫しない日付形式は、パースエラーやデータの誤った解釈を引き起こす可能性があります。

結論

IronXLを使ってC#でCSVファイルのデータを読み取って解析し表示する方法を学びました。 このアプローチをさまざまなデータ構造やファイル形式に適用することができます。 これは、C#を主言語として選ぶ開発者にとって、広く役立つスキルを表します。

IronXLはその機能を体験するための無料トライアルをユーザーに提供しています。 トライアル期間が終了すると、IronXLのライセンスは$799の開始価格で始まります。

例外処理や端境条件の扱いは、特に異なるデータ型の管理や大規模ファイルの使用において、より堅牢なコードを書くために取り組む必要があることを忘れないでください。 さらにIronXLの機能を試して、C#でのデータ処理を強化してください。 コーディングを楽しんでください!

よくある質問

C#でCSVファイルをリストに読み込むにはどうすればよいですか?

C#でCSVファイルをリストに読み込むには、IronXLライブラリを使用します。まず、Visual StudioでC#コンソールプロジェクトを作成し、NuGetパッケージマネージャーを介してIronXLをインストールします。次に、WorkBook.LoadCSVメソッドを使用してCSVファイルを読み込み、データをリストに解析します。

C#でCSVファイルを読み込むために使用するメソッドは何ですか?

C#でCSVファイルを読み込むには、IronXLライブラリのWorkBook.LoadCSVメソッドを使用し、パラメーターとしてファイルパスを指定します。

CSVファイルの内容に合わせたデータ構造をどのように定義しますか?

CSVファイルの列に一致するプロパティを持つ、[Person]クラスなどのクラスを定義します。これにより、CSVから取得したデータをオブジェクト指向の形式に構造化するのが容易になります。

CSVファイル内のヘッダ行をスキップするための技法は何ですか?

ヘッダ行をスキップするには、論理フラグを実装して、行が最初のものであるかをチェックし、次のイテレーションに進むことで処理をスキップします。

C#でCSVファイルを解析するときに空行をどのように処理しますか?

IronXLライブラリの行プロパティIsEmptyなどを使用して、空行をチェックし、解析プロセス中にそれらをスキップします。

CSVファイルを処理する際に異なるデータ型を処理することの重要性は何ですか?

異なるデータ型を正しく処理することで、データが適切に処理され、特に数値フィールドや日付フィールドを扱う際に、型の不一致エラーが発生するのを防ぎます。

CSVファイルの処理に伴う一般的な課題は何ですか?

一般的な課題には、さまざまなデータ型を扱うこと、空行や不完全な行をスキップすること、エラーなしでデータの解析と処理を正確に行うことなどが含まれます。

C#でCSVファイル処理時にライブラリを使用する利点は何ですか?

C#でIronXLライブラリを使用してCSVを処理すると、直感的なメソッドのおかげでCSVファイルの読み込みと解析が簡素化され、データを効率的に取り扱うことができます。

CSVファイルを読み取るC#プロジェクトを設定するためにはどのステップを踏むべきですか?

まず、Visual StudioでC#コンソールプロジェクトを作成し、NuGetパッケージマネージャーを使用してIronXLライブラリをインストールし、WorkBook.LoadCSVメソッドを使用してCSVファイルを読み込み、リストに解析します。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。