IRONXLの使用 C#でCSVファイルをリストに変換する方法 Curtis Chau 更新日:7月 28, 2025 Download IronXL NuGet Download テキストの検索と置換 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article In this tutorial for beginners, we are going to see how to read CSV files into a list in C# using the IronXL library. CSVファイルはデータを保存し、システムやアプリケーション間で転送する非常に一般的な方法であるため、これはどのプログラミング言語でも知っておくべき基本的なことの一つです。 プロジェクトのセットアップから効果的にCSVファイルを解析する方法まで、すべてをカバーします。 CSVファイルをC#のリストに変換する方法 Visual StudioでC#コンソールプロジェクトを作成します。 NuGetパッケージマネージャーを使用してC# CSVライブラリをインストールします。 WorkBook.LoadCSVメソッドを使用してCSVファイルをロードします。 ファイルからデータ値を読み込み、リストを構築します。 コンソールにリストを表示します。 プロジェクトのセットアップ ステップ1: 新しいC#プロジェクトの作成 Visual Studioを開く: コンピューターでVisual Studioを開始します。 新しいプロジェクトを作成: 「新しいプロジェクトを作成」をクリックします。 これにより、プロジェクトの種類を選択できるウィンドウが開きます。 プロジェクトの種類を選択: シンプルにするために「コンソールアプリ(.NET Core)」をプロジェクトタイプとして選択します。 プロジェクトに名前を付ける: プロジェクトにCSVFileReaderという名前を付けます。 場所を選択する: このプロジェクトを保存する適切な場所をデバイス上で選択します。 プロジェクトの生成: 「作成」をクリックして新しいC#プロジェクトを初期化します。 ステップ2: IronXLライブラリのインストール NuGetパッケージマネージャーを開く: Visual Studioで「ツール」メニューに移動し、「NuGetパッケージマネージャー」を選択して「ソリューションのNuGetパッケージを管理...」を選びます。 IronXLを検索: 「参照」タブをクリックして「IronXL.Excel」を検索します。 IronXLをインストール: 検索結果でIronXLパッケージを見つけ、選択して「インストール」をクリックします。ライセンス契約に同意し、変更点を確認してください。 インストールを確認する: インストール後、プロジェクトの参照に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 Dim filename As String = "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); Dim 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; } } Public Class Person Public Property Name() As String Public Property Age() As Integer End Class $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); } 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 $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}"); } For Each person In people Console.WriteLine($"Name: {person.Name}, Age: {person.Age}") Next person $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}"); } } Imports IronXL Imports System Imports System.Collections.Generic 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 $vbLabelText $csharpLabel コードの出力 ファイルを実行すると、リストのデータがコンソールに表示されます。 異なるデータ型の扱い CSVファイルで種々のデータ型を扱う際には、各データ列の特定の型にパースロジックを合わせることが重要です。 Personクラスの例では、Nameは文字列でありStringValueを使用して直接割り当てられますが、Ageのような数値フィールドはInt32.ParseやConvert.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 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 公開日 10月 27, 2025 C#でExcelピボットテーブルを作成する方法 この明確なステップバイステップガイドを使用して、C# InteropとIronXLを使用してExcelでピボットテーブルを作成する方法を学びましょう。 詳しく読む 公開日 10月 27, 2025 C#で列ヘッダー付きのDataGridViewをExcelにエクスポートする方法 IronXLライブラリを使用したステップバイステップのC#チュートリアルで、列ヘッダーを保持しながらDataGridViewデータをExcelにエクスポートする方法を学びましょう。 詳しく読む 公開日 10月 27, 2025 .NET Core CSVリーダーとしてのIronXLの使用方法 実用的な例とともにIronXLを.NET Core CSVリーダーとして効果的に使用する方法を学びましょう。 詳しく読む C#でCSVをデータテーブルにインポートする方法VB.NETでExcelファイルを保存...
公開日 10月 27, 2025 C#でExcelピボットテーブルを作成する方法 この明確なステップバイステップガイドを使用して、C# InteropとIronXLを使用してExcelでピボットテーブルを作成する方法を学びましょう。 詳しく読む
公開日 10月 27, 2025 C#で列ヘッダー付きのDataGridViewをExcelにエクスポートする方法 IronXLライブラリを使用したステップバイステップのC#チュートリアルで、列ヘッダーを保持しながらDataGridViewデータをExcelにエクスポートする方法を学びましょう。 詳しく読む
公開日 10月 27, 2025 .NET Core CSVリーダーとしてのIronXLの使用方法 実用的な例とともにIronXLを.NET Core CSVリーダーとして効果的に使用する方法を学びましょう。 詳しく読む