C# CSVライブラリ: IronXLを使用した完全なチュートリアル
C#でCSVファイルを扱うには、単純な行解析以上の機能を備えたライブラリが必要です。 信頼性の高いエンコード検出、適切な区切り文字処理、厳密な型付け、そして理想的には、2つの別々の依存関係を維持することなくCSVとExcel間でデータを移動できる機能が必要です。 IronXLは、これらすべてを単一の.NETライブラリで提供します。Microsoft Officeは不要で、COMとの相互運用も不要、脆弱な回避策も必要ありません。 サーバー上でフラットデータファイルを処理する場合でも、データパイプラインを構築する場合でも、ユーザーにスプレッドシートのダウンロードを提供する場合でも、 IronXLはあらゆるフォーマットに対応した一貫したAPIを提供します。
C#のスプレッドシートライブラリはどのように設定すればよいですか?
IronXLのインストールはNuGet経由で1分もかかりません。 Visual Studio のパッケージ マネージャー コンソールを開き、以下のコマンドを実行するか、任意のターミナルから.NET CLI を使用してください。
Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
パッケージのインストール後、スプレッドシートデータを操作したいファイルに名前空間を追加してください。
using IronXL;
using IronXL;
Imports IronXL
IronXLは、 .NET Framework 4.6.2以降およびすべての最新の.NETバージョン(Core、5、6、7、8、9、10)を対象としています。 Windows、Linux、macOSで動作するため、デスクトップツールとコンテナ化されたサーバーワークロードの両方に適しています。 パッケージの入手先やライセンスの有効化に関する手順については、IronXLのインストールガイドをご覧ください。
C#でCSVファイルを読み込むにはどうすればよいですか?
IronXLでCSVファイルを読み込む手順は、他のスプレッドシートを読み込む手順と同じです。 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
CODE-42675--@@オブジェクトは、完全なスプレッドシートモデルを公開します。 CODE-42676--@@のような使い慣れたExcel記法でセルにアクセスし、組み込みの変換プロパティ--@--CODE-42677--@、@--CODE-42678--@、@--CODE-42679--@、@--CODE-42680--@--で型の強制を処理するので、文字列を手動で解析する必要はありません。
利用可能なセルアドレス指定オプションにはどのようなものがありますか?
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ファイルをゼロから作成するには、WorkBookの作成、WorkSheetの入力、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")
CODE-42686--@@は、区切り文字の配置、カンマを含むフィールドの引用、および改行の正規化を処理します。 それらを手動で管理する必要はありません。 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
CODE-42689--@@メソッドは、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 または TextFieldParser(@--CODE-42692--@@) から始めます。 どちらも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で直接開けるレポートを作成できます。
先に進むには、以下の手順に従ってください。
1.ライブラリをNuGet経由でインストールするには、@--CODE-42696--@@または@--CODE-42697--@@を使用します。
- IronXL入門ガイドのクイックスタート手順に従って、最初のCSVファイルを読み込みます。
- 同じプロジェクトで両方の形式が必要な場合は、 CSVからExcelへの変換チュートリアルを使用して形式変換を検討してください。
- 高度なセル操作、数式サポート、およびスタイル設定については、 IronXLオブジェクトリファレンスのAPIリファレンスを参照してください。
- IronXLのトライアルライセンスページで無料トライアルを開始してください。クレジットカードは不要で、テクニカルサポートも含まれています。
Iron Softwareの他のツールと併せて検討されている場合は、 IronSoftware製品Suiteには、 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操作に不慣れな開発者にとってアクセスしやすく、使いやすいです。



