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

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

CSVファイル(カンマ区切り値をプレーンテキスト形式で保存したもの)は、アプリケーション、データベース、レポートシステム間でのデータ交換において、依然として最も汎用性の高いフォーマットの一つである。 ユーザーリストのエクスポート、財務レポートの生成、分析プラットフォームへのインポート用データの準備など、C# を使用してプログラムで CSV ファイルを作成および読み込む機能は、現代 for .NET開発において不可欠です。 開発者は、StringBuilderStreamWriter といったシンプルな var line アプローチで 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にアクセスして、次のコマンドを実行してください:

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;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

この単一の名前空間は、スプレッドシートの作成とCSVエクスポート操作に必要なすべてのクラスへのアクセスを提供します。 CSV ファイルを手動で書き込む際に StreamWriterStringBuilder に依存するアプローチとは異なり、 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", ",");
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", ",");
Imports IronXL

' Create a new workbook and worksheet
Dim workBook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = 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", ",")
$vbLabelText   $csharpLabel

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", ",");
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", ",");
Imports IronXL

' Define the Student class with public string properties
Public Class Student
    Public Property FirstName As String
    Public Property LastName As String
    Public Property Email As String
End Class

' Create sample data
Dim students As New List(Of Student) From {
    New Student With {.FirstName = "John", .LastName = "Smith", .Email = "john@example.com"},
    New Student With {.FirstName = "Jane", .LastName = "Doe", .Email = "jane@example.com"}
}

Dim workBook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = workBook.DefaultWorkSheet

' Add header row
sheet("A1").Value = "FirstName"
sheet("B1").Value = "LastName"
sheet("C1").Value = "Email"

' Use For Each to iterate through the list and write each item
Dim row As Integer = 2
For Each item In students
    sheet($"A{row}").Value = item.FirstName
    sheet($"B{row}").Value = item.LastName
    sheet($"C{row}").Value = item.Email
    row += 1
Next

workBook.SaveAsCsv("students.csv", ",")
$vbLabelText   $csharpLabel

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

既存の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");
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");
Imports IronXL

' Load an existing Excel file
Dim workBook As WorkBook = WorkBook.Load("Monthly_Report_20251012.xlsx")

' Convert and save as CSV format
workBook.SaveAsCsv("Monthly_Report_20251012.csv")
$vbLabelText   $csharpLabel

Load() メソッドは、XLSX、XLS、XLSM などのさまざまな形式の Excel ファイル、および既存の CSV または TSV ファイルを開きます。 この柔軟性により、入力ファイルの元の形式に関係なく、標準的なエクスポートパイプラインを構築できます。 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");
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");
Imports IronXL

' Load a multi-sheet workbook (e.g., annual sales by region)
Dim workBook As 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
Dim northRegion As WorkSheet = workBook.GetWorkSheet("North")
northRegion.SaveAsCsv("north_region_sales.csv")
$vbLabelText   $csharpLabel

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

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

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

Enterpriseアプリケーションは、データベースクエリ、APIレスポンス、またはインメモリデータ処理から生成されたオブジェクトを扱うことがよくあります。 IronXLはこれら for .NETデータ構造とファイルエクスポートのギャップを埋め、アプリケーションメモリから共有可能なCSVファイルへの信頼できるパスを提供します。 IronXLは文字エスケープ、区切り文字管理、エンコードを自動的に処理するため、この方法は手動でCSVファイルを作成するよりも信頼性が高いです。

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", ",");
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", ",");
Imports IronXL
Imports System.Data

' Create and populate a DataTable with columns
Dim products As New DataTable()
products.Columns.Add("SKU", GetType(String))
products.Columns.Add("ProductName", GetType(String))
products.Columns.Add("Price", GetType(Decimal))
products.Columns.Add("InStock", GetType(Integer))

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

' Create workbook and transfer DataTable contents
Dim workBook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = workBook.DefaultWorkSheet

' Add header row from column names
For col As Integer = 0 To products.Columns.Count - 1
    sheet.SetCellValue(0, col, products.Columns(col).ColumnName)
Next

' Add data rows using nested loops
For row As Integer = 0 To products.Rows.Count - 1
    For col As Integer = 0 To products.Columns.Count - 1
        sheet.SetCellValue(row + 1, col, products.Rows(row)(col).ToString())
    Next
Next

' Export to CSV
workBook.SaveAsCsv("product_inventory.csv", ",")
$vbLabelText   $csharpLabel

このパターンは、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", "|");
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", "|");
Imports IronXL

Dim workBook As 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", vbTab)

' Pipe delimiter (used in some data interchange formats)
workBook.SaveAsCsv("output_pipe.csv", "|")
$vbLabelText   $csharpLabel

SaveAsCsv() の 2 番目のパラメータは、区切り文字として任意の文字列を受け入れるため、多様なシステムや地域的な要件との統合において完全な柔軟性を提供します。 国際的に配布するファイルを作成する際は、対象システムの地域設定を考慮してください。ヨーロッパの金融システムではセミコロン区切りが一般的ですが、北米のシステムでは通常カンマ区切りがデフォルトとなっています。 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);
}
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);
}
Imports IronXL

' Load an existing CSV file
Dim workBook As WorkBook = WorkBook.Load("employees.csv")
Dim sheet As WorkSheet = workBook.DefaultWorkSheet

' Access specific cells by reference
Dim firstHeader As String = sheet("A1").StringValue

' Iterate through all rows
For Each row In sheet.Rows
    For Each cell In row
        Console.Write(cell.StringValue & vbTab)
    Next
    Console.WriteLine()
Next

' Access a range of cells
Dim nameColumn = sheet("B2:B100")
For Each cell In nameColumn
    Console.WriteLine(cell.StringValue)
Next
$vbLabelText   $csharpLabel

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

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

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

  • WorkBook.Create() メモリに新しいスプレッドシートを初期化するため
  • WorkBook.Load() サポートされている任意の形式で既存の Excel ファイルと CSV ファイルを開く
  • SaveAsCsv() カスタマイズ可能な区切り文字を使用してデータをエクスポートする場合
  • 対象を絞った変換のために、GetWorkSheet() を使用して個別のワークシートをエクスポートします。
  • DataTable データベースからCSVへのワークフローの反復パターン
  • foreach ループを使用したオブジェクトリストのエクスポート
  • フルレンジアクセスでCSVデータをアプリケーションに読み込む

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

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

よくある質問

CSVファイルとは何ですか?

CSVファイル(カンマ区切り値ファイル)は、アプリケーション、データベース、レポートシステム間でのデータ交換に使用されるプレーンテキスト形式です。汎用的なフォーマットであるため、リストのエクスポート、レポートの生成、分析用データの準備などに役立ちます。

C# を使用して CSV ファイルを作成するにはどうすればよいでしょうか?

WorkBook を作成し、WorkSheet にデータを入力し、目的の出力パスと区切り文字を使用して SaveAsCsv() を呼び出すことで、 IronXLを使用して C# で CSV ファイルを作成できます。

CSV作成にIronXLを使う利点は何ですか?

IronXLは、C#でCSVファイルを作成するためのエラーのないアプローチを提供し、StreamWriterなどの従来の手動の方法よりも複雑なデータ構造を効率的に処理します。また、ExcelからCSVへの変換、数式の評価、複数シートのエクスポートもサポートしています。

IronXLはCSVファイルを作成する際、どのようにデータの複雑さを処理しますか?

IronXL は、CSV エクスポート中に文字のエスケープ、区切り文字の処理、数式の評価、データ型の保持を自動的に管理し、エラーを最小限に抑え、データの整合性を確保します。

IronXLは分析プラットフォームへのデータインポートに使用できますか?

IronXLは構造化されたCSVファイルを作成することで、分析プラットフォームへのインポートに必要なデータを準備します。

IronXLでCSVファイルの自動生成は可能ですか?

IronXLはC#による自動化をサポートしており、開発者はより大規模な.NETアプリケーションの一部としてCSVファイルをプログラムで生成し、効率性と生産性を高めることができます。

C#で手動でCSVを作成する方法の一般的な落とし穴は何ですか?

StreamWriter のような手動の方法では、文字のエスケープ、区切り文字の管理、エンコード用のカスタム コードが必要になりますが、データの複雑さが増すにつれて、これらすべてにおいてエラーが発生しやすくなります。

IronXLは.NET開発におけるCSVファイル作成プロセスをどのように改善しますか?

IronXL は、データの複雑さを自動的に処理する直感的な方法を提供することで CSV 作成プロセスを簡素化し、 .NETアプリケーション内で正確かつ効率的な CSV ファイル生成を保証します。

IronXLはデータベースからCSVファイルにデータをエクスポートできますか?

はい、 IronXL はデータベース クエリから生成された DataTable オブジェクトを CSV ファイルに直接エクスポートできるため、データ交換や他のシステムとの統合が容易になります。

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

WorkBook.Load() にCSVファイルへのパスを渡して使用してください。IronXLはCSVファイルを標準のワークブック/ワークシートモデルに解析し、Excelファイルと同じAPIを使用して個々のセルや範囲にアクセスできるようにします。

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

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

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

アイアンサポートチーム

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