透かしなしで本番環境でテストしてください。
必要な場所で動作します。
30日間、完全に機能する製品をご利用いただけます。
数分で稼働させることができます。
製品トライアル期間中にサポートエンジニアリングチームへの完全アクセス
この初心者向けチュートリアルでは、CSVファイルを読む方法を、C#のリストに取り込むためにIronXLライブラリを使用する方法を紹介します。 さて、これはどのプログラミング言語でも知っておくべき基本的な事項の一つです。CSVファイルはデータを保存し、あるシステムやアプリケーションから別のシステムやアプリケーションに転送するための非常に一般的な方法です。 プロジェクトの設定からCSVファイルの効率的な解析まで、すべてをカバーします。
Visual StudioでC#コンソールプロジェクトを作成します。
NuGetパッケージマネージャーを使用してC# CSVライブラリをインストールします。
WorkBook.LoadCSV
メソッドを使用してCSVファイルを読み込みます。
ファイルからデータ値を読み取り、リストに入力する。
Visual Studioを開く: コンピューターでVisual Studioを起動します。
新しいプロジェクトを作成: 「新しいプロジェクトを作成」をクリックしてください。 これは、プロジェクトの種類を選択できるウィンドウを開きます。
プロジェクトタイプを選択: 簡単のために「Console App (.NET Core)」をプロジェクトタイプとして選んでください。
プロジェクト名: プロジェクトにCSVFileReaderという名前を付けます。
場所を選択: このプロジェクトを保存するために、デバイス上の適切な場所を選択します。
NuGet パッケージ マネージャーを開く: Visual Studio で「ツール」メニューに移動し、「NuGet パッケージ マネージャー」を選択して「ソリューションの NuGet パッケージの管理...」を選びます。
IronXL を探す: 「Browse」タブをクリックし、「IronXL.Excel」を検索してください。
IronXLのインストール: 検索結果からIronXLパッケージを見つけて選択し、「インストール」をクリックします。ライセンス契約に同意し、変更内容を確認してください。
インストールの確認: インストール後、プロジェクトの参照にIronXLが表示されているはずです。
これで、CSVFileReader プロジェクトが IronXL ライブラリで設定され、C# で CSV ファイルを読み込み、処理する準備が整いました。 このセットアップは、このチュートリアルの後続セクションで行うCSV読み取りタスクの基盤を形成します。
プロジェクトのセットアップとIronXLライブラリのインストールが完了したので、CSVファイルの解析と処理に焦点を当てましょう。 私たちは、Program.cs
ファイル内で作業します。このファイルはあなたのCSVFileReaderプロジェクトで自動的に生成されています。
データを読み取る前に、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
IronXLはCSVファイルの読み込みを簡単にします。WorkBook.LoadCSV
メソッドを使用してCSVファイルを WorkBook
オブジェクトに読み込みます。
var csv = WorkBook.LoadCSV(filename);
var csv = WorkBook.LoadCSV(filename);
Dim csv = WorkBook.LoadCSV(filename)
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
このステップでは、CSVファイルを解析し、データをList<Person>
に入力します。 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
この解析プロセスでは、最初に解析されたデータを保存するためのList<Person>
を初期化し、CSVファイルのヘッダ行をスキップするためにブールフラグisFirstRow
を使用します。 foreach
ループは、CSVファイルの各行を通して繰り返します。最初の反復中に、ヘッダー行が識別されてスキップされるため、データ行のみが処理されることが保証されます。 次に、各行が空でないことを確認するためにrow.IsEmpty
を使用してチェックします。 このステップは、空行によるパースエラーを避けるために重要です。
各データ行ごとに、その行をセルの配列に変換します(row.ToArray()
)そして、このデータでPerson
オブジェクトを作成します。 「Age」文字列を整数に変換するなど、データ型を正しく分析および変換することは重要です。 解析されたPerson
オブジェクトは、その後、people
リストに追加されます。このアプローチでは、有効なデータ行のみが処理され、保存されるため、数値列での非数値文字列や予期しない空の行などの潜在的な問題を効果的に処理します。
CSVデータをList<Person>
にパースした後、次に重要なステップはデータを表示して確認することです。 これにより、解析が成功したことを確認するだけでなく、出力を観察して迅速にデータ品質チェックを行うこともできます。 以下のように実装できます:
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
以下は完全な 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
ファイルを実行すると、コンソールにリストのデータが表示されます。
CSVファイル内の様々なデータ型を取り扱う際には、各データ列の特定の型に合わせてパースロジックを調整することが重要です。 Person
クラスの例では、Name
は文字列であり、StringValue
を使用して直接割り当てることができますが、Age
のような数値フィールドは、Int32.Parse
または Convert.ToInt32
を使用して文字列から整数に変換する必要があります。 これを行うことは、型の不一致エラーを回避するために不可欠です。
より複雑なデータ型、例えば日付には、日付の文字列表現をDateTime
オブジェクトに変換するためにDateTime.Parse
を使用します。 CSVファイルで使用されている日付形式に注意し、コードで期待される形式と一致していることを確認することが重要です。 日付形式の不一致は、解析エラーやデータの誤解を引き起こす可能性があります。
CSVファイルのデータをIronXLを使用してC#で読み取り、解析し、表示する方法を学びました。 このアプローチは、さまざまな種類のデータ構造やファイル形式に対して使用することができます。 したがって、これはC#を主な言語として選択するすべての開発者にとって、非常に有用なスキルを表しています。
IronXL は、その機能を体験するための無料トライアルを提供しています。 試用期間が終了すると、IronXLのライセンスは$749から開始されます。
例外やエッジケースに対処することで、異なるデータ型を管理し、大きなファイルを扱う際に、より堅牢なコードを記述する必要があります。 IronXLのより多くの機能を試し、探求して、C#でのデータ処理を強化し続けてください。 楽しいコーディングを!