C# CSVライブラリ: IronXLを使用した完全なチュートリアル
C#でCSVファイルを扱うには、単純な行解析以上の機能を備えたライブラリが必要です。 信頼性の高いエンコード検出、適切な区切り文字処理、厳密な型付け、そして理想的には、2つの別々の依存関係を維持することなくCSVとExcel間でデータを移動できる機能が必要です。 IronXLは、これらすべてを単一 for .NETライブラリで提供します。Microsoft Officeは不要で、COMとの相互運用も不要、脆弱な回避策も必要ありません。 サーバー上でフラットデータファイルを処理する場合でも、データパイプラインを構築する場合でも、ユーザーにスプレッドシートのダウンロードを提供する場合でも、 IronXLはあらゆるフォーマットに対応した一貫したAPIを提供します。
C#スプレッドシートライブラリをどのようにセットアップするのですか?
IronXLのインストールはNuGet経由で1分もかかりません。 Visual Studio のパッケージ マネージャー コンソールを開き、以下のコマンドを実行するか、任意のターミナルから.NET CLI を使用してください。
Install-Package IronXL.Excel
パッケージのインストール後、スプレッドシートデータを操作したいファイルに名前空間を追加してください。
using IronXL;
using IronXL;
Imports IronXL
IronXLは、 .NET Framework 4.6.2以降およびすべての最新 for .NETバージョン(Core、5、6、7、8、9、10)を対象としています。 Windows、Linux、macOSで動作するため、デスクトップツールとコンテナ化されたサーバーワークロードの両方に適しています。 パッケージの入手先やライセンスの有効化に関する手順については、IronXLのインストールガイドをご覧ください。
C#でCSVファイルをどのように読み取りますか?
IronXLでCSVファイルを読み込む手順は、他のスプレッドシートを読み込む手順と同じです。 ファイルパスを指定しWorkBook.Loadを呼び出すと、IronXLが拡張子からフォーマットを自動的に推測します。追加の設定は不要です。
// Load a CSV file into a WorkBook
WorkBook workBook = WorkBook.Load("sales_data.csv");
// Access the default worksheet
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Read individual cells by Excel-style address
string customerName = workSheet["A2"].StringValue;
decimal orderAmount = workSheet["B2"].DecimalValue;
// Iterate rows, starting at index 1 to skip the header
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
var row = workSheet.Rows[i];
Console.WriteLine($"Customer: {row.Columns[0].Value}, Amount: {row.Columns[1].Value}");
}
// Load a CSV file into a WorkBook
WorkBook workBook = WorkBook.Load("sales_data.csv");
// Access the default worksheet
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Read individual cells by Excel-style address
string customerName = workSheet["A2"].StringValue;
decimal orderAmount = workSheet["B2"].DecimalValue;
// Iterate rows, starting at index 1 to skip the header
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
var row = workSheet.Rows[i];
Console.WriteLine($"Customer: {row.Columns[0].Value}, Amount: {row.Columns[1].Value}");
}
Imports System
' Load a CSV file into a WorkBook
Dim workBook As WorkBook = WorkBook.Load("sales_data.csv")
' Access the default worksheet
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
' Read individual cells by Excel-style address
Dim customerName As String = workSheet("A2").StringValue
Dim orderAmount As Decimal = workSheet("B2").DecimalValue
' Iterate rows, starting at index 1 to skip the header
For i As Integer = 1 To workSheet.Rows.Count() - 1
Dim row = workSheet.Rows(i)
Console.WriteLine($"Customer: {row.Columns(0).Value}, Amount: {row.Columns(1).Value}")
Next
WorkBookオブジェクトはスプレッドシート全体のモデルを提供します。 セルにはDateTimeValueといった組み込みの変換プロパティで型の強制変換を行うため、文字列を手動で解析する必要はありません。
利用可能なセルアドレス指定オプションにはどのようなものがありますか?
IronXLは、単一セルへのアクセスに加えて、範囲表記と行/列の反復処理をサポートしています。 workSheet["A2:C10"]のような範囲指定を使って、矩形ブロックのセルを指定し、一つの平坦なコレクションとして走査できます。 これは、ネストされたループを書かずに既知のデータブロックを検証または変換したい場合に便利です。
// Access a range and print each value
foreach (var cell in workSheet["A2:C10"])
{
Console.WriteLine($"{cell.AddressString}: {cell.Value}");
}
// Access a range and print each value
foreach (var cell in workSheet["A2:C10"])
{
Console.WriteLine($"{cell.AddressString}: {cell.Value}");
}
' Access a range and print each value
For Each cell In workSheet("A2:C10")
Console.WriteLine($"{cell.AddressString}: {cell.Value}")
Next
動的な行数に対応するために、workSheet.Rowsコレクションは読み込まれたデータを自動的に反映するので、行数をハードコードする必要はありません。 ヘッダー検出や複数エンコーディングファイルなど、その他のパターンについては、 C# の CSV 読み込みチュートリアルを参照してください。
CSV行をカスタムオブジェクトにマッピングするにはどうすればよいですか?
よくある要件として、表形式のCSVデータを型付きコレクションに変換することが挙げられます。 行を反復処理し、それぞれを通常のC#クラスに投影することができます。
public record SalesRecord(string Customer, decimal Amount, DateTime OrderDate);
WorkBook workBook = WorkBook.Load("sales_data.csv");
WorkSheet workSheet = workBook.DefaultWorkSheet;
var records = new List<SalesRecord>();
// Start at row 1 to skip the header row (row 0)
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
var row = workSheet.Rows[i];
records.Add(new SalesRecord(
Customer: row.Columns[0].StringValue,
Amount: row.Columns[1].DecimalValue,
OrderDate: row.Columns[2].DateTimeValue
));
}
public record SalesRecord(string Customer, decimal Amount, DateTime OrderDate);
WorkBook workBook = WorkBook.Load("sales_data.csv");
WorkSheet workSheet = workBook.DefaultWorkSheet;
var records = new List<SalesRecord>();
// Start at row 1 to skip the header row (row 0)
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
var row = workSheet.Rows[i];
records.Add(new SalesRecord(
Customer: row.Columns[0].StringValue,
Amount: row.Columns[1].DecimalValue,
OrderDate: row.Columns[2].DateTimeValue
));
}
Imports System
Imports System.Collections.Generic
Public Class SalesRecord
Public Property Customer As String
Public Property Amount As Decimal
Public Property OrderDate As DateTime
Public Sub New(customer As String, amount As Decimal, orderDate As DateTime)
Me.Customer = customer
Me.Amount = amount
Me.OrderDate = orderDate
End Sub
End Class
Dim workBook As WorkBook = WorkBook.Load("sales_data.csv")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
Dim records As New List(Of SalesRecord)()
' Start at row 1 to skip the header row (row 0)
For i As Integer = 1 To workSheet.Rows.Count() - 1
Dim row = workSheet.Rows(i)
records.Add(New SalesRecord(
Customer:=row.Columns(0).StringValue,
Amount:=row.Columns(1).DecimalValue,
OrderDate:=row.Columns(2).DateTimeValue
))
Next
このアプローチでは、解析ロジックとビジネスロジックが明確に分離され、アプリケーションの残りの部分全体で各レコードが厳密に型付けされます。

C#でCSVファイルをどのように書きますか?
ゼロからCSVファイルを作成するには、SaveAsCsvを呼び出す3つのステップがあります。 このプロセスは、一般的なスプレッドシートの作成方法とほぼ同じであるため、出力形式に関わらずAPIの一貫性が保たれます。
// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("inventory");
// Write header row
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Price";
// Write data rows
workSheet["A2"].Value = "Widget A";
workSheet["B2"].Value = 250;
workSheet["C2"].Value = 9.99;
workSheet["A3"].Value = "Gadget B";
workSheet["B3"].Value = 120;
workSheet["C3"].Value = 24.50;
// Export to CSV
workBook.SaveAsCsv("inventory.csv");
// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("inventory");
// Write header row
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Price";
// Write data rows
workSheet["A2"].Value = "Widget A";
workSheet["B2"].Value = 250;
workSheet["C2"].Value = 9.99;
workSheet["A3"].Value = "Gadget B";
workSheet["B3"].Value = 120;
workSheet["C3"].Value = 24.50;
// Export to CSV
workBook.SaveAsCsv("inventory.csv");
' Create a new workbook and worksheet
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("inventory")
' Write header row
workSheet("A1").Value = "Product"
workSheet("B1").Value = "Quantity"
workSheet("C1").Value = "Price"
' Write data rows
workSheet("A2").Value = "Widget A"
workSheet("B2").Value = 250
workSheet("C2").Value = 9.99D
workSheet("A3").Value = "Gadget B"
workSheet("B3").Value = 120
workSheet("C3").Value = 24.5D
' Export to CSV
workBook.SaveAsCsv("inventory.csv")
SaveAsCsvは区切り文字の配置、カンマを含むフィールドの引用符化、改行の正規化を処理します。 それらを手動で管理する必要はありません。 IronXLはエクスポート時に数値型を保持するため、Excelやpandasなどの下流ツールは数値を引用符で囲まれたテキスト文字列としてではなく、数値として読み取ることができます。
データテーブルをCSVファイルにエクスポートするにはどうすればよいですか?
多くのアプリケーションは、データベースからデータをDataTableに取得します。 IronXLは1回の呼び出しでワークシートにDataTable全体を挿入することができ、大量エクスポートを簡単にします。
DataTable dataTable = GetProductsFromDatabase();
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("products");
workSheet.InsertDataTable(dataTable, "A1");
workBook.SaveAsCsv("products.csv");
DataTable dataTable = GetProductsFromDatabase();
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("products");
workSheet.InsertDataTable(dataTable, "A1");
workBook.SaveAsCsv("products.csv");
IRON VB CONVERTER ERROR developers@ironsoftware.com
DataTableスキーマからカラムヘッダーを書き、指定されたアドレスからすべての行を入力します。 データセットが大きい場合、これは行を手動でループ処理するよりもはるかに効率的です。 カスタム区切り文字やエンコード設定などのオプションについては、 CSVエクスポートに関するドキュメントを参照してください。

C#でCSVとExcelをどのように変換しますか?
IronXLが提供する最も価値のある機能の1つは、CSV形式とExcel形式間の双方向変換です。 APIは対称的です。Loadはサポートされている任意の形式を読み取り、Saveメソッドファミリーはターゲット形式に書き込みます。
// Convert CSV to Excel
WorkBook csvWorkBook = WorkBook.Load("data.csv");
csvWorkBook.SaveAs("data.xlsx");
// Convert Excel back to CSV
WorkBook xlsxWorkBook = WorkBook.Load("report.xlsx");
xlsxWorkBook.SaveAsCsv("report.csv");
// Convert CSV to Excel
WorkBook csvWorkBook = WorkBook.Load("data.csv");
csvWorkBook.SaveAs("data.xlsx");
// Convert Excel back to CSV
WorkBook xlsxWorkBook = WorkBook.Load("report.xlsx");
xlsxWorkBook.SaveAsCsv("report.csv");
' Convert CSV to Excel
Dim csvWorkBook As WorkBook = WorkBook.Load("data.csv")
csvWorkBook.SaveAs("data.xlsx")
' Convert Excel back to CSV
Dim xlsxWorkBook As WorkBook = WorkBook.Load("report.xlsx")
xlsxWorkBook.SaveAsCsv("report.csv")
これらの変換によってデータの整合性が維持されます。 数値は数値のまま保持され、日付フィールドは型が維持され、数式の結果は書き込まれる前に計算値に評価されます。 IronXLは、複数シートのExcelファイルをCSVに変換する際、各ワークシートごとに個別のCSVファイルを自動的に作成します。
WorkBook multiSheetWorkBook = WorkBook.Load("quarterly_report.xlsx");
// Produces: quarterly_report.Sheet1.csv, quarterly_report.Sheet2.csv, etc.
multiSheetWorkBook.SaveAsCsv("quarterly_report.csv");
WorkBook multiSheetWorkBook = WorkBook.Load("quarterly_report.xlsx");
// Produces: quarterly_report.Sheet1.csv, quarterly_report.Sheet2.csv, etc.
multiSheetWorkBook.SaveAsCsv("quarterly_report.csv");
Dim multiSheetWorkBook As WorkBook = WorkBook.Load("quarterly_report.xlsx")
' Produces: quarterly_report.Sheet1.csv, quarterly_report.Sheet2.csv, etc.
multiSheetWorkBook.SaveAsCsv("quarterly_report.csv")
この動作は、下流のコンシューマーがファイルごとに1つのトピックを期待するレポートパイプラインにおいて特に役立ちます。CSV書き込みチュートリアルでは、区切り文字の指定やエクスポートに含めるシートの制御など、その他のオプションについても説明しています。


CSV専用ライブラリが実際のプロジェクトで不十分なのはなぜか?
多くのC#開発者はCsvHelperまたはMicrosoft.VisualBasicからTextFieldParserを使用して始めます。 どちらもCSVファイルのみを扱うワークフローに適したツールです。 要件が拡大すると、ギャップが生じる。例えば、関係者がCSVではなくExcelファイルのダウンロードを要求したり、財務部門が数式を保持することを要求したり、セキュリティポリシーでパスワード保護されたファイルを要求したりするケースだ。 その時点で、CSV専用のライブラリを使用すると、2つ目の依存関係を追加し、2つの異なる統合パスを維持する必要が生じます。 統合されたスプレッドシートライブラリがあれば、最初からそのような分断は解消されます。
| 能力 | IronXL | CsvHelper | TextFieldParser |
|---|---|---|---|
| CSVファイルの読み込み | はい | はい | はい |
| CSVファイルを書き込む | はい | はい | なし |
| XLSXファイルの読み書き | はい | なし | なし |
| 式評価 | はい | なし | なし |
| セルのスタイリングと書式設定 | はい | なし | なし |
| パスワードで保護されたファイル | はい | なし | なし |
| オフィスへの依存が必要 | なし | なし | なし |
| クロスプラットフォーム(.NET 10) | はい | はい | 制限あり |
統合ライブラリには、他にどのようなスプレッドシート機能がありますか?
フォーマット変換に加えて、CSVとExcelの両方を扱うライブラリは、プロジェクトの規模が大きくなるにつれて役立つスプレッドシート操作機能を提供します。 IronXLでは、特に以下の特典が得られます。
- 数式評価 --
=SUM(B2:B10)のような数式をセルに書き込んで、Excelがなくても計算結果を読み取ることができます。 - セルと範囲のスタイリング -- フォントの太さ、背景色、数値フォーマット、境界線をIronXLスタイリングAPIを通じて適用します。
- パスワード保護 --
WorkBook.Load("secure.xlsx", "password")で暗号化されたワークブックを開いて、新しいファイルを暗号化して保存します。 -名前付き範囲-- Excel と同様に名前付き領域を定義して参照できるため、数式の作成やデータ検証が簡素化されます。 -大容量ファイルのサポート-- IronXL は、ファイルを一度にメモリに読み込むことなく、マネージド コードでデータを処理するため、数万行のファイルであってもメモリ使用量を予測可能にします。
IronXLの機能ページには、サポートされている操作の全リストが掲載されています。
IronXLはクロスプラットフォーム展開をどのように処理しますか?
スプレッドシートライブラリにおける繰り返し発生する課題の一つは、プラットフォーム固有の動作である。 COM相互運用に依存するライブラリはWindows上でしか動作せず、Officeにシェル接続するライブラリはOfficeのインストールが必要です。 IronXLはネイティブ依存関係のない完全マネージドコードであるため、同じバイナリをLinuxコンテナ、macOS開発マシン、Windowsサーバー上で変更することなく実行できます。 これにより、 Azure、AWS、Docker、または任意の .NET 10 への展開が簡単になります。
DapperやEntity Framework Coreなどのツールを使ってデータパイプラインを構築する開発者にとって、 IronXLはシリアライゼーションレイヤーとして最適です。CSV形式の入力データを読み込み、ORMで処理し、結果をXLSXまたはCSV形式でエクスポートできます。IronXL のライセンスページでは、商用利用向けのライセンスティアについて説明しています。

次のステップは何ですか?
IronXLは、あらゆる.NET 10アプリケーションにおいて、CSVファイルとExcelファイルの読み書き、変換を行うための、一貫性のある単一のAPIを提供します。 主な利点は明確です。Officeへの依存がなく、クロスプラットフォームに対応し、セル値の型付けが厳密に行われ、要件が変更された場合でも、CSVのみのプロジェクトから完全なスプレッドシート機能へと直接移行できます。
さらに深く掘り下げる準備ができたら、現在のプロジェクトに最も関連性の高いトピックから始めましょう。 主にCSVインポートパイプラインを扱う場合、上記で説明した読み込みとマッピングのパターンは、実際のシナリオの大部分に対応できます。 出力要件が異なる場合(例えば、下流のスクリプトにはCSV、エンドユーザーにはXLSXなど)、フォーマット変換のセクションでは、単一のコードベースで両方に対応する方法を示しています。
レポートシステムを構築したり、データベースから結果をエクスポートするチームにとって、InsertDataTableアプローチはよくスケールし、行ごとのセル割り当てのパフォーマンスコストを避けます。 これにセルのスタイル設定を組み合わせることで、ユーザーが再フォーマットせずにExcelで直接開けるレポートを作成できます。
先に進むには、以下の手順に従ってください。
dotnet add package IronXLを使用してNuGet経由でライブラリをインストールします。- IronXL入門ガイドのクイックスタート手順に従って、最初のCSVファイルを読み込みます。
- 同じプロジェクトで両方の形式が必要な場合は、 CSVからExcelへの変換チュートリアルを使用して形式変換を検討してください。
- 高度なセル操作、数式サポート、およびスタイル設定については、 IronXLオブジェクトリファレンスのAPIリファレンスを参照してください。
- IronXLのトライアルライセンスページで無料トライアルを開始してください。クレジットカードは不要で、テクニカルサポートも含まれています。
他のIron Softwareツールと一緒にオプションを評価する場合、Iron Software製品スイートは、 IronPDFによるPDFの生成、バーコード読み取り、OCRなどをカバーしており、同じライセンスモデルとサポートチャネルを共有しています。
よくある質問
IronXLとは何か、そしてC#でのCSVファイルにどのように役立つか?
IronXLは、開発者がCSVファイルをシームレスに読み書きおよび変換できる強力なC#ライブラリです。Excelワークブックの拡張サポートを提供し、行、列、データ型の一貫した処理と高いパフォーマンスを確保します。
なぜ無料のライブラリであるCsvHelperを使用する代わりにIronXLを使用するのですか?
CsvHelperは基本的なCSV操作には適していますが、IronXLはExcelワークブックのサポート、パフォーマンスの強化、堅牢なデータ型の処理などの機能で優れており、より複雑なスプレッドシートワークフローに適しています。
IronXLはCSVとExcelフォーマットの両方を処理できますか?
はい、IronXLはCSVとExcelのフォーマットを効率的に処理するよう設計されており、両者間の変換を容易に行います。
IronXLはハイパフォーマンスのデータ処理をサポートしていますか?
IronXLはハイパフォーマンスで構築されており、データのインポートとエクスポートプロセスをスムーズに、最適化された速度と効率で行います。
IronXLを既存のスプレッドシートワークフローと統合することは可能ですか?
もちろん、IronXLは既存のスプレッドシートワークフローとシームレスに統合し、CSVおよびExcelフォーマット間のデータ管理の機能を強化します。
IronXLはどのようにして複雑なCSVファイル操作に適しているのですか?
IronXLは、行、列、およびデータ型の一貫した処理のような堅牢な機能を提供し、基本的な処理以上を必要とする複雑なCSVファイル操作に最適です。
IronXLを使用してCSVファイルをExcelに変換することはできますか?
はい、IronXLの主要な機能の1つはCSVファイルをExcel形式に変換し、その逆も可能であり、データ管理プロセスを合理化します。
IronXLはどのように信頼性のあるCSVファイル処理を確保していますか?
IronXLは、複雑なデータ型のサポートやExcel機能との統合を含む高度な機能を通じ、信頼性のあるCSVファイル処理を確保します。
IronXLを使用することでデータインポート/エクスポートの利点は何ですか?
IronXLはスムーズなデータのインポート/エクスポートプロセスを提供し、開発者の時間と労力を節約しながら、フォーマット間でのデータの完全性と正確性を確保します。
C#でのCSV操作に不慣れな開発者にとってIronXLは使いやすいですか?
はい、IronXLはユーザーフレンドリーな機能とシンプルなコード例を備えており、C#でのCSV操作に不慣れな開発者にとってアクセスしやすく、使いやすいです。




