IRONSOFTWAREHOME
IRONXLの使用

C# CSV リーダーとライター: IronXLを使用して CSV ファイルを作成、エクスポート、変換する

Curtis Chau
Curtis Chau
Updated: 2026年4月21日

CSVファイル(カンマ区切り値をプレーンテキスト形式で保存したもの)は、アプリケーション、データベース、レポートシステム間でのデータ交換において、依然として最も汎用性の高いフォーマットの一つである。 ユーザーリストのエクスポート、財務レポートの生成、分析プラットフォームへのインポート用データの準備など、C# を使用してプログラムで CSV ファイルを作成および読み込む機能は、現代 for .NET開発において不可欠です。 開発者は、しばしばStreamWriterでCSVを生成し始めますが、これらの手動方法はデータの複雑さが増すにつれてエラーが発生しやすくなります。

一部の開発者は基本的な読み書き操作にCSVヘルパーライブラリを利用しますが、これらのツールはIronXLのようなスプレッドシート優先のアプローチに比べて、依然として手動でのマッピングと行レベルの処理が必要です。 このガイドでは、Microsoft Excelのインストールを必要とせずにスプレッドシート操作を簡素化する強力な.NETライブラリであるIronXLを使用して、データをCSVファイルに書き込む方法、既存のExcelワークブックをCSV形式に変換する方法、およびオブジェクトをカンマ区切り値にエクスポートする方法を説明します。 IronXLは、Windows、macOS、Linux、そしてDockerやAzureといったコンテナ環境など、幅広いプラットフォームで動作するため、クラウドネイティブアプリケーションやマイクロサービスアーキテクチャに最適です。

CSV形式とは何か、そしてなぜ重要なのか?

CSV(Comma Separated Values)ファイルは、異なるアプリケーション間で表形式のデータを保存および交換するために最も広く使用されている形式の1つです。 最も単純な形として、CSVファイルは、各行がカンマで区切られた一連の値を含むプレーンテキストファイルです。 このわかりやすい構造により、CSVデータは、さまざまなソフトウェア・システムで簡単に生成、読み取り、処理することができます。

CSV形式は軽量で人間が読みやすいため、レポートのエクスポート、データベース間のデータ転送、分析ツールとの連携などに広く利用されています。 CSVファイルでは、各行が1つのレコードを表し、各行内の値はカンマで区切られています。 通常、ファイルの最初の行はヘッダーとして機能し、各列の名前が記載されています。 続くすべての行に実際のデータが含まれ、各値はヘッダーの列に対応しています。

CSVファイルの構造を理解することで、区切り文字の選択、文字のエスケープ処理、エンコードなど、下流システムが出力結果を確実に解析できるかどうかに影響を与えるすべての要素について、より適切な判断を下すことができます。 CSVファイル形式はRFC 4180で定義されており、埋め込みカンマ、フィールド内の改行文字、引用符で囲まれた文字列値などの特殊なケースの処理方法に関するガイダンスが提供されています。

IronXLを.NETプロジェクトにインストールするにはどうすればよいですか?

Microsoft for .NET向けパッケージマネージャーであるNuGetを使えば、新しいプロジェクトにIronXLを追加するのにほんの数秒しかかかりません。 Visual Studioを開き、NuGet Package Manager Consoleにアクセスして、次のコマンドを実行してください:

PM > Install-Package IronXL.Excel

C#を使用したIronXLでのCSVへの保存: 画像1 - インストール

または、ソリューション・エクスプローラーでプロジェクトを右クリックし、"Manage NuGet Packages "を選択し、"Browse "タブで "IronXL "を検索し、"Install "をクリックします。 IronXLは、 .NET Framework 4.6.2以降、 .NET Core、 .NET 5/6/7/8/10をサポートしており、外部依存関係やCOM相互運用要件なしに、あらゆるプラットフォームで動作します。

インストール後、usingステートメントを使用してコードファイルにIronXLの名前空間を追加します。

using IronXL;

この単一の名前空間は、スプレッドシートの作成とCSVエクスポート操作に必要なすべてのクラスへのアクセスを提供します。 CSVファイルを手動で書き込むためにStringBuilderに依存するアプローチとは異なり、IronXLは特殊文字のエスケープ、データ型の保持、エクスポート前の数式の評価を含む適切なCSVフォーマットの複雑さを自動的に処理します。

IronXLのドキュメントには、セルのスタイル設定、数式の評価、パスワード保護、グラフ生成などの高度な機能を含む、APIの全範囲が網羅されています。 手軽に参照できるよう、 IronXLのサンプルライブラリには、一般的なスプレッドシートのシナリオを網羅した、すぐに実行できるコードサンプルが用意されています。

IronXLはどのプラットフォームをサポートしていますか?

IronXLは、 .NETがサポートされているあらゆるプラットフォームで動作します。 これには、Windowsデスクトップおよびサーバー環境、macOS開発マシン、およびDockerコンテナを含むLinuxサーバーが含まれます。 AzureやAWS上でクラウドネイティブアプリケーションを構築するチームにとって、 IronXLは追加の設定なしで動作します。 このライブラリは、COM相互運用、Microsoft Officeのインストール、および外部システムへの依存関係を必要としないため、標準的なパッケージ管理ワークフローを通じて簡単に展開および更新できます。

ゼロから新しいCSVファイルを作成するにはどうすればよいですか?

プログラムで新しいCSVファイルを作成するには、ワークブックの作成、データの入力、CSV形式での保存という3つのステップが必要です。 IronXLのAPIは、使い慣れたExcelオブジェクトモデルを模倣しているため、開発者はコンソールアプリケーションやあらゆる種類 for .NETプロジェクトで、スプレッドシートの概念を扱うコードを簡単に記述できます。

従業員レコードのリストをCSVファイルにエクスポートする必要があるシナリオを考えてみましょう。以下は、トップレベルのステートメントを使用した完全な例です。

using IronXL;

// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.CreateWorkSheet("Employees");

// Add header row with column names
sheet["A1"].Value = "EmployeeID";
sheet["B1"].Value = "Name";
sheet["C1"].Value = "Department";
sheet["D1"].Value = "Salary";

// Add employee data rows
sheet["A2"].Value = 1001;
sheet["B2"].Value = "Sarah Johnson";
sheet["C2"].Value = "Engineering";
sheet["D2"].Value = 85000;

sheet["A3"].Value = 1002;
sheet["B3"].Value = "Michael Chen";
sheet["C3"].Value = "Marketing";
sheet["D3"].Value = 72000;

sheet["A4"].Value = 1003;
sheet["B4"].Value = "Emily Rodriguez";
sheet["C4"].Value = "Finance";
sheet["D4"].Value = 91000;

// Save as CSV file
workBook.SaveAsCsv("employees.csv", ",");

WorkBook.Create()メソッドは、完全にメモリ内で新しいスプレッドシートを初期化し、最終的な保存操作まで一時ファイルやディスク入出力を必要としません。 CreateWorkSheet()メソッドは、ブックに名前付きのワークシートを追加します。名前は、マルチシートのワークブックをCSVにエクスポートする際に関連します。

出力

C#を使用したIronXLでのCSVへの保存: 画像2 - CSV出力

sheet["A1"]のようなセル参照は、値を割り当てることができる特定のセルに直接アクセスを提供します。 IronXLは文字列、整数、小数、日付、ブール値などさまざまなデータ型を受け入れ、それぞれの型に適したフォーマットを自動的に処理します。 より複雑なデータ入力シナリオについては、 IronXLのレンジ操作ガイドを参照して、一括セル割り当て手法を確認してください。

SaveAsCsv() メソッドは、ワークシートの内容をファイルにエクスポートします。最初のパラメータは出力ファイル名とパスを指定し、2 番目のパラメータは区切り文字を定義します。 IronXLは自動的に適切な書式を処理します。これにはCSVの解析に支障をきたすような特殊文字のエスケープや、エクスポート処理全体を通してデータの整合性を維持することも含まれます。

オブジェクトのリストをCSVファイルにエクスポートするにはどうすればよいですか?

強く型付けされたオブジェクトを扱う場合、foreachループを使用してコレクションを反復処理し、各アイテムをワークシートに書き込むことができます。 ここでは、公開されている文字列プロパティを持つStudentクラスを使用した例を示します。

using IronXL;

// Define the Student class with public string properties
public class Student
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
}

// Create sample data
var students = new List<Student>
{
    new Student { FirstName = "John", LastName = "Smith", Email = "john@example.com" },
    new Student { FirstName = "Jane", LastName = "Doe", Email = "jane@example.com" }
};

WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.DefaultWorkSheet;

// Add header row
sheet["A1"].Value = "FirstName";
sheet["B1"].Value = "LastName";
sheet["C1"].Value = "Email";

// Use foreach to iterate through the list and write each item
int row = 2;
foreach (var item in students)
{
    sheet[$"A{row}"].Value = item.FirstName;
    sheet[$"B{row}"].Value = item.LastName;
    sheet[$"C{row}"].Value = item.Email;
    row++;
}

workBook.SaveAsCsv("students.csv", ",");

このパターンは、各項目を繰り返し処理し、そのプロパティを特定の列にマッピングすることによって、リスト・オブジェクトを CSV データにエクスポートする方法を示します。 foreachループはコレクション内の各学生を処理し、文字列補間を使ってセル参照を動的に構築します。 リフレクションベースのプロパティマッピングや匿名型を含むシナリオの場合、PropertyInfoオブジェクトをタイプのメタデータから反復処理することでこのアプローチを適応させることができます。

既存のExcelファイルをCSVファイルに変換するにはどうすればよいですか?

ExcelスプレッドシートをCSV形式に変換することは、レガシーシステムとの統合、データベースインポートのためのデータ準備、または人間が作成したレポートから機械可読出力を生成する場合によくある要件です。 IronXLはデータの正確性を保ちながら、最小限のコードでこの変換を行います。

using IronXL;

// Load an existing Excel file
WorkBook workBook = WorkBook.Load("Monthly_Report_20251012.xlsx");

// Convert and save as CSV format
workBook.SaveAsCsv("Monthly_Report_20251012.csv");

Load()メソッドは、XLSX、XLS、XLSM、既存のCSVやTSVファイルを含むさまざまな形式でExcelファイルを開きます。 この柔軟性により、入力ファイルの元の形式に関係なく、標準的なエクスポートパイプラインを構築できます。 IronXLでサポートされているExcel形式の全リストについては、 IronXLのドキュメントを参照してください。

入力

C#を使用したIronXLでのCSVへの保存: 画像3 - サンプルExcel入力

出力

C#を使用したIronXLでのCSVへの保存: 画像4 - ExcelからCSVへの出力

変換中のIronXLの特筆すべき機能の一つは、自動式評価です。 CSVに保存する際、IronXLはスプレッドシートに存在する数式を計算し、数式テキストではなく結果の値をエクスポートします。 たとえば、=SUM(A1:A10)を含むセルは計算された合計としてエクスポートされるため、CSVファイルには下流システムが直ちに使用できる実行可能なデータが含まれます。

マルチシートエクスポートはどのように機能しますか?

複数のワークシートを含むExcelワークブックを扱う場合、IronXLは各シートごとに別々のCSVファイルを自動的に作成します。 この機能は、財務報告書、地域別売上データ、または各部門やカテゴリーが1つのマスター・ワークブックの中で独自のワークシートを占めるようなシナリオで特に価値があります。

using IronXL;

// Load a multi-sheet workbook (e.g., annual sales by region)
WorkBook workBook = WorkBook.Load("annual_sales.xlsx");

// Export all sheets to CSV -- creates separate files for each sheet
workBook.SaveAsCsv("sales_export.csv");
// Output: sales_export.North.csv, sales_export.South.csv, sales_export.East.csv, etc.

// Or export a specific worksheet
WorkSheet northRegion = workBook.GetWorkSheet("North");
northRegion.SaveAsCsv("north_region_sales.csv");

命名規則では、各ワークシート名をベースファイル名に追加することで、処理やアーカイブ時にエクスポートされた各ファイルのソースを簡単に識別できるようにしています。 特定のワークシートだけが必要なターゲットエクスポートの場合、SaveAsCsv()をそのシートオブジェクトに直接呼び出します。

IronXLのドキュメントで、Excel形式間の変換方法について詳しくご覧ください。

データテーブルをCSVファイルにエクスポートするにはどうすればよいですか?

エンタープライズアプリケーションは、頻繁に、データベースクエリやAPIレスポンス、メモリ内データ処理からのDataTableオブジェクトを使います。 IronXLはこれら for .NETデータ構造とファイルエクスポートのギャップを埋め、アプリケーションメモリから共有可能なCSVファイルへの信頼できるパスを提供します。 この方法は、StreamWriterによる手動のCSVファイル作成よりも信頼性があり、IronXLはキャラクターエスケープ、デリミタ管理、エンコーディングを自動的に処理します。

using IronXL;
using System.Data;

// Create and populate a DataTable with columns
DataTable products = new DataTable();
products.Columns.Add("SKU", typeof(string));
products.Columns.Add("ProductName", typeof(string));
products.Columns.Add("Price", typeof(decimal));
products.Columns.Add("InStock", typeof(int));

// Add rows of data
products.Rows.Add("SKU-001", "Wireless Mouse", 29.99m, 150);
products.Rows.Add("SKU-002", "Mechanical Keyboard", 89.99m, 75);
products.Rows.Add("SKU-003", "USB-C Hub", 45.99m, 200);

// Create workbook and transfer DataTable contents
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.DefaultWorkSheet;

// Add header row from column names
for (int col = 0; col < products.Columns.Count; col++)
{
    sheet.SetCellValue(0, col, products.Columns[col].ColumnName);
}

// Add data rows using nested loops
for (int row = 0; row < products.Rows.Count; row++)
{
    for (int col = 0; col < products.Columns.Count; col++)
    {
        sheet.SetCellValue(row + 1, col, products.Rows[row][col].ToString());
    }
}

// Export to CSV
workBook.SaveAsCsv("product_inventory.csv", ",");

このパターンはDataTable構造を通じてイテレーションを行い、列ヘッダーを最初に転送し、その後システマチックに各データ行を埋めます。 DefaultWorkSheetプロパティは、新しく作成されたワークブックの最初のワークシートへの迅速なアクセスを提供し、簡単なシナリオでの明示的なワークシート作成の必要を排除します。

出力

C#を使用したIronXLでのCSVへの保存: 画像5 - DataTableからCSVへの出力

IronXLはデータ転送の過程でデータ型を保持し、数値の精度と日付の書式を維持します。 このアプローチは、単純なルックアップクエリからの数十行のデータを含む場合でも、大規模なデータエクスポートからの数千件のレコードを含む場合でも、あらゆるサイズのデータ​​テーブルに対して優れた拡張性を発揮します。 エクスポート前にスプレッドシートをさらに操作するには、セルの書式設定オプションと範囲操作を確認してください。

CSVファイル内のカスタム区切り文字はどのように処理しますか?

システムや地域によって、必要な区切り文字は異なります。 カンマは多くの国で標準的な区切り文字ですが、ヨーロッパ地域ではセミコロンが好まれることが多く、カンマは数値の小数部の区切り文字として機能します。 タブ区切りファイル(TSV)は、ソースデータにフィールド値内のカンマが含まれている場合によく使用されます。 IronXLのSaveAsCsv()メソッドは、出力の各行を処理するための追加コードを必要とせずに、これらのシナリオすべてに対応します。

using IronXL;

WorkBook workBook = WorkBook.Load("data.xlsx");

// Standard comma delimiter (default format)
workBook.SaveAsCsv("output_comma.csv", ",");

// Semicolon delimiter (common in European systems)
workBook.SaveAsCsv("output_semicolon.csv", ";");

// Tab delimiter (TSV format)
workBook.SaveAsCsv("output_tab.tsv", "\t");

// Pipe delimiter (used in some data interchange formats)
workBook.SaveAsCsv("output_pipe.csv", "|");

SaveAsCsv()の第二パラメータは、任意の文字列をデリミタとして受け入れ、さまざまなシステムや地域の要件に合わせた完全な柔軟性を提供します。 国際的に配布するファイルを作成する際は、対象システムの地域設定を考慮してください。ヨーロッパの金融システムではセミコロン区切りが一般的ですが、北米のシステムでは通常カンマ区切りがデフォルトとなっています。 CSVに関するRFC 4180規格では、解析エラーを防ぐために、区切り文字を含む値をどのように引用符で囲むべきかが規定されています。

C#でのCSVファイル生成のベストプラクティスは何ですか?

C#でCSVファイルを扱う場合、確立された手法に従うことで、データの正確性、可読性、および他のシステムとの互換性を確保できます。 以下の表は、最も重要な考慮事項をまとめたものです。

C#におけるCSVファイル生成のベストプラクティス
練習するなぜそれが重要なのかIronXLのアプローチ
一貫した区切り文字下流システムでの解析エラーを防止しますSaveAsCsv() 関数に区切り文字を 2 番目の引数として渡します。
特別価格の見積もりデータにカンマが含まれている場合でもフィールドの整合性を維持しますIronXLによって自動的に処理されます
日付形式の一貫性地域やシステム間での曖昧さを回避する保存前にセルの書式を設定して出力を制御する
値の中に改行を入れないでください行構造の破損を防ぎますIronXLはエクスポート時に埋め込まれた改行をエスケープします
例外処理ファイルストリームが適切に閉じられることを保証しますIronXLは内部でリソースを処分する
保存する前に検証してください消費者に届く前にデータの問題を検出します範囲演算を使用して、エクスポート前にセル値を検証します。

基本的な事項に加えて、国際的な視聴者を対象とする場合は、明示的なエンコードを検討してください。 Microsoft ExcelでCSVファイルを開き、非ASCII文字を正しく表示するには、BOM付きUTF-8が必要となる場合が多い。 数百万行にも及ぶ大量のデータをエクスポートする場合は、単一の大きなCSVファイルに書き込むのではなく、データを複数のファイルに分割することを検討してください。これにより、ファイルサイズを管理しやすくし、生成時と処理時の両方でメモリ負荷を軽減できます。

データパイプラインを構築するチーム向けに、 IronXLの非同期およびストリーミングに関するドキュメントでは、ワークブック全体をメモリに読み込むことなく大規模なデータセットを処理するためのパターンについて解説しています。 IronXLのサンプルライブラリには、バッチ処理、スケジュールされたエクスポートジョブ、Entity Frameworkなどの一般的なORMフレームワークとの統合に関する追加のパターンが含まれています。

.NETエコシステムのCSV処理ツールを使用する際、 IronXLが低レベルのアプローチと比較してどのような位置づけにあるかを理解することで、それぞれのシナリオに最適なツールを選択するのに役立ちます。 Excelを使用せずに純粋にCSVを生成するには、StreamWriterと手動の引用ロジックが十分であるかもしれません。 Excel形式の互換性、数式評価、高度な書式設定などに関わるあらゆる作業において、 IronXLはより信頼性の高い基盤を提供します。

IronXLで既存のCSVファイルを読み込むにはどうすればよいですか?

CSVデータをアプリケーションに読み込む手順は、他のスプレッドシート形式のデータを読み込む場合と同じです。 IronXLのLoad()メソッドはCSVファイルを認識し、Excelファイルと同じAPIを使用して個別のセルや範囲にアクセスを提供する標準のワークブック/ワークシートモデルに解析します。

using IronXL;

// Load an existing CSV file
WorkBook workBook = WorkBook.Load("employees.csv");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Access specific cells by reference
string firstHeader = sheet["A1"].StringValue;

// Iterate through all rows
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.Write(cell.StringValue + "\t");
    }
    Console.WriteLine();
}

// Access a range of cells
var nameColumn = sheet["B2:B100"];
foreach (var cell in nameColumn)
{
    Console.WriteLine(cell.StringValue);
}

読み取り操作と書き込み操作に一貫性があるため、チームはスプレッドシート関連のすべてのタスクに対して、単一のAPIを習得するだけで済みます。 CSVファイルを開くのと同じWorkBook.Load()メソッドは、XLSX、XLS、およびXLSM形式も扱い、複数の形式の入力を受け入れるパイプラインを構築する際に役立ちます。 IronXLを使用したCSVファイルの読み取りについての詳細は、ドキュメントをご覧ください。

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

このガイドでは、C# でIronXLを使用して CSV ファイルを作成および管理するためのコアパターンについて説明しました。

  • メモリ内で新しいスプレッドシートを初期化するためのWorkBook.Create()
  • 任意のサポートされている形式で既存のExcelおよびCSVファイルを開くためのWorkBook.Load()
  • カスタマイズ可能なデリミタでデータをエクスポートするためのSaveAsCsv()
  • ターゲット変換用のGetWorkSheet()を使用した個別のワークシートエクスポート
  • データベースからCSVへのワークフローのためのDataTableイテレーションパターン
  • foreachループを使用したオブジェクトリストのエクスポート
  • フルレンジアクセスでCSVデータをアプリケーションに読み込む

これらのテクニックを実践するには、 IronXLの無料トライアルを開始して、スプレッドシートの全機能を時間制限なしで試用してみてください。 本番環境への導入準備が整ったら、 IronXLのライセンスオプションを確認し、チームの規模と使用要件に最適なプランを選択してください。

セルのスタイル設定、数式の作成、グラフの生成、パスワード保護などの高度なシナリオを網羅した追加の例については、 IronXL のドキュメント完全なコード例ライブラリを参照してください。 IronXLのチュートリアルシリーズでは、 DataTableのエクスポートフォーマット変換CSVファイルへの書き込みなど、より複雑な統合シナリオについて解説します。

Curtis Chau
テクニカルライター

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

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。