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

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
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

パッケージのインストール後、スプレッドシートデータを操作したいファイルに名前空間を追加してください。

using IronXL;
using IronXL;
$vbLabelText   $csharpLabel

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

WorkBook オブジェクトは、完全なスプレッドシート モデルを公開します。 "A2" のようなおなじみの Excel 表記を使用してセルにアクセスし、組み込みの変換プロパティ -- 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}");
}
$vbLabelText   $csharpLabel

動的な行数の場合、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
    ));
}
$vbLabelText   $csharpLabel

このアプローチでは、解析ロジックとビジネスロジックが明確に分離され、アプリケーションの残りの部分全体で各レコードが厳密に型付けされます。

C# CSVライブラリを使用してファイルを読み書きする方法:図1 - CSVファイルの出力の読み取り

C#でCSVファイルを作成する方法を教えてください

CSV ファイルをゼロから作成するには、次の 3 つの手順が必要です。WorkBook を作成し、WorkSheet にデータを入力し、SaveAsCsv を呼び出します。 このプロセスは、一般的なスプレッドシートの作成方法とほぼ同じであるため、出力形式に関わらず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");
$vbLabelText   $csharpLabel

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

InsertDataTable メソッドは、DataTable スキーマから列ヘッダーを書き込み、指定したアドレスから始まるすべての行にデータを入力します。 データセットが大きい場合、これは行を手動でループ処理するよりもはるかに効率的です。 カスタム区切り文字やエンコード設定などのオプションについては、 CSVエクスポートに関するドキュメントを参照してください。

C# CSVライブラリを使用してファイルを読み書きする方法:図2 - IronXLを使用して新しく作成された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");
$vbLabelText   $csharpLabel

これらの変換によってデータの整合性が維持されます。 数値は数値のまま保持され、日付フィールドは型が維持され、数式の結果は書き込まれる前に計算値に評価されます。 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");
$vbLabelText   $csharpLabel

この動作は、下流のコンシューマーがファイルごとに1つのトピックを期待するレポートパイプラインにおいて特に役立ちます。CSV書き込みチュートリアルでは、区切り文字の指定やエクスポートに含めるシートの制御など、その他のオプションについても説明しています。

C# CSVライブラリを使用してファイルを読み書きする方法:図3 - 複数ページのExcelファイルを個別のCSVファイルとして保存

C# CSVライブラリを使用してファイルを読み書きする方法:図4 - 元のExcel形式ファイルと変換されたCSVファイル

今IronXLを始めましょう。
green arrow pointer

CSV専用ライブラリが実際のプロジェクトで不十分なのはなぜか?

多くの C# 開発者は、Microsoft.VisualBasicCsvHelperまたはTextFieldParserから始めます。 どちらもCSVファイルのみを扱うワークフローに適したツールです。 要件が拡大すると、ギャップが生じる。例えば、関係者がCSVではなくExcelファイルのダウンロードを要求したり、財務部門が数式を保持することを要求したり、セキュリティポリシーでパスワード保護されたファイルを要求したりするケースだ。 その時点で、CSV専用のライブラリを使用すると、2つ目の依存関係を追加し、2つの異なる統合パスを維持する必要が生じます。 統合されたスプレッドシートライブラリがあれば、最初からそのような分断は解消されます。

IronXLとCSV専用ライブラリの機能比較
能力 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、または任意 for .NET 10ターゲットへのデプロイが容易になります。

DapperEntity Framework Coreなどのツールを使ってデータパイプラインを構築する開発者にとって、 IronXLはシリアライゼーションレイヤーとして最適です。CSV形式の入力データを読み込み、ORMで処理し、結果をXLSXまたはCSV形式でエクスポートできます。IronXL のライセンスページでは、商用利用向けのライセンスティアについて説明しています。

C# CSVライブラリを使用してファイルを読み書きする方法:図5 - IronXLとcsv専用ライブラリの比較表

次のステップは何ですか?

IronXLは、あらゆる.NET 10アプリケーションにおいて、CSVファイルとExcelファイルの読み書き、変換を行うための、一貫性のある単一のAPIを提供します。 主な利点は明確です。Officeへの依存がなく、クロスプラットフォームに対応し、セル値の型付けが厳密に行われ、要件が変更された場合でも、CSVのみのプロジェクトから完全なスプレッドシート機能へと直接移行できます。

さらに深く掘り下げる準備ができたら、現在のプロジェクトに最も関連性の高いトピックから始めましょう。 主にCSVインポートパイプラインを扱う場合、上記で説明した読み込みとマッピングのパターンは、実際のシナリオの大部分に対応できます。 出力要件が異なる場合(例えば、下流のスクリプトにはCSV、エンドユーザーにはXLSXなど)、フォーマット変換のセクションでは、単一のコードベースで両方に対応する方法を示しています。

レポートシステムを構築したり、データベースから結果をエクスポートしたりするチームにとって、InsertDataTable のアプローチは拡張性に優れており、行ごとのセル割り当てによるパフォーマンスのオーバーヘッドを回避できます。 これにセルのスタイル設定を組み合わせることで、ユーザーが再フォーマットせずにExcelで直接開けるレポートを作成できます。

先に進むには、以下の手順に従ってください。

  1. NuGetを使用してライブラリをインストールします(Install-Package IronXL または dotnet add package IronXL を使用)。
  2. IronXL入門ガイドクイックスタート手順に従って、最初のCSVファイルを読み込みます。
  3. 同じプロジェクトで両方の形式が必要な場合は、 CSVからExcelへの変換チュートリアルを使用して形式変換を検討してください
  4. 高度なセル操作、数式サポート、およびスタイル設定については、 IronXLオブジェクトリファレンスAPIリファレンスを参照してください
  5. 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操作に不慣れな開発者にとってアクセスしやすく、使いやすいです。

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

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

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

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね