IronXLを使って.NETで CSV ファイルを書き込む方法
なぜ.NET開発者にはより良いCSVソリューションが必要なのか?
CSVファイルは、数多く for .NETアプリケーション間でデータ交換を支える重要なツールですが、実際の複雑なデータを扱う場合、標準ライブラリのオプションだけでは不十分なことがよくあります。財務報告書から在庫管理システムまで、わずか数行のコードでプログラム的にCSVファイルを作成できます。 CsvHelperのようなライブラリが基本的なCSV操作をカバーしていますが、現代の開発者はより複雑なシナリオに直面しています:Excelワークブックの変換、エクスポート時のデータ型の保持、エンタープライズ規模のスプレッドシートワークフローの処理。 IronXLは、信頼性の高いCSV書き込み機能と完全なExcel機能を、 RFC 4180規格に準拠した単一の依存関係のないライブラリに統合することで、これらの課題に対処します。
これは、複数の列、行固有の処理ロジック、および自動的に推測される区切り文字をサポートするカスタム for .NET CSVライターまたは.NET CSVパーサーを構築する開発者にとって理想的です。 このチュートリアルでは、IronXLのCSV機能について、基本的なファイル作成から企業規模のデータエクスポートまで、順を追って説明します。
IronXLのインストールと設定方法を教えてください
IronXLのインストールは、 NuGetパッケージマネージャーを使えば数秒で完了します。 パッケージ マネージャー コンソールまたは.NET CLI のいずれかを使用できます。
インストールが完了したら、 IronXLの名前空間を追加して、すぐにCSVファイルの書き込みを開始してください。 次の例は、 .NET 10 のトップレベル ステートメントを使用してワークブックを作成し、データを入力し、CSV にエクスポートする方法を示しています。
using IronXL;
// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("data");
// Add headers
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Price";
// Add data rows
workSheet["A2"].Value = "Widget";
workSheet["B2"].Value = 100;
workSheet["C2"].Value = 19.99;
workSheet["A3"].Value = "Gadget";
workSheet["B3"].Value = 250;
workSheet["C3"].Value = 34.50;
workSheet["A4"].Value = "Component";
workSheet["B4"].Value = 75;
workSheet["C4"].Value = 8.99;
// Save as CSV with comma delimiter
workBook.SaveAsCsv("inventory.csv", ",");Imports IronXL
' Create a new workbook and worksheet
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("data")
' Add headers
workSheet("A1").Value = "Product"
workSheet("B1").Value = "Quantity"
workSheet("C1").Value = "Price"
' Add data rows
workSheet("A2").Value = "Widget"
workSheet("B2").Value = 100
workSheet("C2").Value = 19.99
workSheet("A3").Value = "Gadget"
workSheet("B3").Value = 250
workSheet("C3").Value = 34.5
workSheet("A4").Value = "Component"
workSheet("B4").Value = 75
workSheet("C4").Value = 8.99
' Save as CSV with comma delimiter
workBook.SaveAsCsv("inventory.csv", ",")Imports IronXL
' Create a new workbook and worksheet
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("data")
' Add headers
workSheet("A1").Value = "Product"
workSheet("B1").Value = "Quantity"
workSheet("C1").Value = "Price"
' Add data rows
workSheet("A2").Value = "Widget"
workSheet("B2").Value = 100
workSheet("C2").Value = 19.99
workSheet("A3").Value = "Gadget"
workSheet("B3").Value = 250
workSheet("C3").Value = 34.5
workSheet("A4").Value = "Component"
workSheet("B4").Value = 75
workSheet("C4").Value = 8.99
' Save as CSV with comma delimiter
workBook.SaveAsCsv("inventory.csv", ",")このシンプルなプログラムは、C#コードから直接CSVコンテンツを書き込み、データを保持するWorkBookオブジェクトを作成する方法を示しています。 SaveAsCsv メソッドは、デフォルトの区切り文字としてカンマを使用しますが、任意の区切り文字を指定することもできます。これは、セミコロンやタブが標準的な列区切り文字であるような、地域固有のシナリオで役立ちます。
ワークブックとワークシートモデルの理解
IronXLは、ワークブックからワークシートへの階層構造を通してデータを整理します。 WorkBookは、1つ以上のWorkSheetオブジェクトを格納するコンテナとして機能し、各WorkSheetオブジェクトはセルのグリッドを表します。 CSVにエクスポートすると、IronXLは作業シートごとに1つのファイルを作成し、それらにfilename.SheetName.csvというパターンで名前を付けます。
このモデルは、新しいファイルをゼロから作成する場合、既存の Excel ワークブック をロードする場合、またはデータベースからデータをエクスポートする場合でも、一定の API を提供します。 セルを参照するには、標準のExcel表記(B2)またはゼロベースの行と列の整数を使用し、ワークフローに適したものを使用します。
カスタム区切り文字を使用してCSVファイルを作成する方法を教えてください
地域やシステムによって、期待される列区切り記号は異なります。 ヨーロッパの地域では、小数点にはコンマが使われるため、セミコロンがよく使われる。 タブ区切り値(TSV)は、バイオインフォマティクスやログ処理パイプラインでよく使用されます。 IronXLのSaveAsCsvメソッドは、任意の文字列を区切り文字として受け入れます。
using IronXL;
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");
workSheet["A1"].Value = "Region";
workSheet["B1"].Value = "Revenue";
workSheet["C1"].Value = "Units";
workSheet["A2"].Value = "Europe";
workSheet["B2"].Value = "1250000.50";
workSheet["C2"].Value = 3400;
workSheet["A3"].Value = "なしrth America";
workSheet["B3"].Value = "2800000.00";
workSheet["C3"].Value = 7200;
// Semicolon delimiter for European locales
workBook.SaveAsCsv("sales_europe.csv", ";");
// Tab delimiter for TSV output
workBook.SaveAsCsv("sales_tsv.tsv", "\t");using IronXL;
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");
workSheet["A1"].Value = "Region";
workSheet["B1"].Value = "Revenue";
workSheet["C1"].Value = "Units";
workSheet["A2"].Value = "Europe";
workSheet["B2"].Value = "1250000.50";
workSheet["C2"].Value = 3400;
workSheet["A3"].Value = "なしrth America";
workSheet["B3"].Value = "2800000.00";
workSheet["C3"].Value = 7200;
// Semicolon delimiter for European locales
workBook.SaveAsCsv("sales_europe.csv", ";");
// Tab delimiter for TSV output
workBook.SaveAsCsv("sales_tsv.tsv", "\t");Imports IronXL
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("sales")
workSheet("A1").Value = "Region"
workSheet("B1").Value = "Revenue"
workSheet("C1").Value = "Units"
workSheet("A2").Value = "Europe"
workSheet("B2").Value = "1250000.50"
workSheet("C2").Value = 3400
workSheet("A3").Value = "なしrth America"
workSheet("B3").Value = "2800000.00"
workSheet("C3").Value = 7200
' Semicolon delimiter for European locales
workBook.SaveAsCsv("sales_europe.csv", ";")
' Tab delimiter for TSV output
workBook.SaveAsCsv("sales_tsv.tsv", vbTab)Imports IronXL
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("sales")
workSheet("A1").Value = "Region"
workSheet("B1").Value = "Revenue"
workSheet("C1").Value = "Units"
workSheet("A2").Value = "Europe"
workSheet("B2").Value = "1250000.50"
workSheet("C2").Value = 3400
workSheet("A3").Value = "なしrth America"
workSheet("B3").Value = "2800000.00"
workSheet("C3").Value = 7200
' Semicolon delimiter for European locales
workBook.SaveAsCsv("sales_europe.csv", ";")
' Tab delimiter for TSV output
workBook.SaveAsCsv("sales_tsv.tsv", vbTab)区切り文字文字列は、追加の解析設定なしに、直接区切り文字スロットに挿入されます。 IronXL は、区切り文字を含むセルの引用符を処理し、出力がRFC 4180に準拠するようにします。
ExcelワークブックをCSVに変換するにはどうすればよいですか?

IronXLは、既存のExcelファイルをCSVに変換すること、数式を評価すること、およびデータの整合性を維持することに優れています。 これは、ヘッダー行と動的に計算された値の両方を含むスプレッドシートを扱う場合に不可欠です。
using IronXL;
// Load an Excel file with formulas and formatting
WorkBook workBook = WorkBook.Load("financial_report.xlsx");
// Evaluate all formulas before export so calculated values appear in CSV
workBook.EvaluateAll();
// Export to CSV -- each worksheet creates a separate CSV file
// Creates: report.Sheet1.csv, report.Sheet2.csv, etc.
workBook.SaveAsCsv("report.csv", ",");using IronXL;
// Load an Excel file with formulas and formatting
WorkBook workBook = WorkBook.Load("financial_report.xlsx");
// Evaluate all formulas before export so calculated values appear in CSV
workBook.EvaluateAll();
// Export to CSV -- each worksheet creates a separate CSV file
// Creates: report.Sheet1.csv, report.Sheet2.csv, etc.
workBook.SaveAsCsv("report.csv", ",");Imports IronXL
' Load an Excel file with formulas and formatting
Dim workBook As WorkBook = WorkBook.Load("financial_report.xlsx")
' Evaluate all formulas before export so calculated values appear in CSV
workBook.EvaluateAll()
' Export to CSV -- each worksheet creates a separate CSV file
' Creates: report.Sheet1.csv, report.Sheet2.csv, etc.
workBook.SaveAsCsv("report.csv", ",")Imports IronXL
' Load an Excel file with formulas and formatting
Dim workBook As WorkBook = WorkBook.Load("financial_report.xlsx")
' Evaluate all formulas before export so calculated values appear in CSV
workBook.EvaluateAll()
' Export to CSV -- each worksheet creates a separate CSV file
' Creates: report.Sheet1.csv, report.Sheet2.csv, etc.
workBook.SaveAsCsv("report.csv", ",")複数のシートのワークブックを変換する際、IronXLは各ワークシートごとに個別のCSVファイルを自動的に生成します。 式の計算はエクスポート前に実行され、最終CSV出力に正確なデータを保証します。 EvaluateAll メソッドは、ファイルがディスクに書き込まれる前に、シート間の参照を含むすべての数式を解決します。
出力
まず、複数シートのExcelファイルから生成されたCSVファイルは以下のとおりです。

そして、これはExcelシートの1つと対応するCSVファイルの例の比較です:

データテーブルをCSVファイルにエクスポートするにはどうすればよいですか?
データベース駆動のアプリケーションの場合、IronXL は DataTable エクスポート を容易にします。 次の例では、モックデータソースからDataTableを読み込み、セミコロン区切りでCSVに書き出します。
using System.Data;
using IronXL;
// Simulate a DataTable from a database query
DataTable dataTable = GetSalesData();
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");
// Write column headers from DataTable schema
for (int col = 0; col < dataTable.Columns.Count; col++)
{
workSheet.SetCellValue(0, col, dataTable.Columns[col].ColumnName);
}
// Write data rows
int row = 1;
foreach (DataRow dataRow in dataTable.Rows)
{
for (int col = 0; col < dataTable.Columns.Count; col++)
{
workSheet.SetCellValue(row, col, dataRow[col]?.ToString() ?? string.Empty);
}
row++;
}
// Export with semicolon delimiter for European compatibility
workBook.SaveAsCsv("sales_data.csv", ";");using System.Data;
using IronXL;
// Simulate a DataTable from a database query
DataTable dataTable = GetSalesData();
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");
// Write column headers from DataTable schema
for (int col = 0; col < dataTable.Columns.Count; col++)
{
workSheet.SetCellValue(0, col, dataTable.Columns[col].ColumnName);
}
// Write data rows
int row = 1;
foreach (DataRow dataRow in dataTable.Rows)
{
for (int col = 0; col < dataTable.Columns.Count; col++)
{
workSheet.SetCellValue(row, col, dataRow[col]?.ToString() ?? string.Empty);
}
row++;
}
// Export with semicolon delimiter for European compatibility
workBook.SaveAsCsv("sales_data.csv", ";");Imports System.Data
Imports IronXL
' Simulate a DataTable from a database query
Dim dataTable As DataTable = GetSalesData()
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("sales")
' Write column headers from DataTable schema
For col As Integer = 0 To dataTable.Columns.Count - 1
workSheet.SetCellValue(0, col, dataTable.Columns(col).ColumnName)
Next
' Write data rows
Dim row As Integer = 1
For Each dataRow As DataRow In dataTable.Rows
For col As Integer = 0 To dataTable.Columns.Count - 1
workSheet.SetCellValue(row, col, If(dataRow(col)?.ToString(), String.Empty))
Next
row += 1
Next
' Export with semicolon delimiter for European compatibility
workBook.SaveAsCsv("sales_data.csv", ";")Imports System.Data
Imports IronXL
' Simulate a DataTable from a database query
Dim dataTable As DataTable = GetSalesData()
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("sales")
' Write column headers from DataTable schema
For col As Integer = 0 To dataTable.Columns.Count - 1
workSheet.SetCellValue(0, col, dataTable.Columns(col).ColumnName)
Next
' Write data rows
Dim row As Integer = 1
For Each dataRow As DataRow In dataTable.Rows
For col As Integer = 0 To dataTable.Columns.Count - 1
workSheet.SetCellValue(row, col, If(dataRow(col)?.ToString(), String.Empty))
Next
row += 1
Next
' Export with semicolon delimiter for European compatibility
workBook.SaveAsCsv("sales_data.csv", ";")dataTable.Rowsコレクションの各行が作業シートの新しい行になります。 IronXL は変換中に データ型 を保持します。 - 数値は数値のまま、日付はフォーマットを保持し、テキストは追加の設定なしで特殊文字を処理します。
出力
ここでは、出力CSVファイルの横に模擬データソースが表示されています。

CSVファイルの書き込みにおいて、 IronXLとCsvHelperを比較するとどう違うのか?
両方のライブラリを使用したCSV書き込みワークフローを示す、従業員データのエクスポートシナリオを考えてみましょう。
CsvHelperの実装:
using System.Globalization;
using System.IO;
using CsvHelper;
using var writer = new StreamWriter("employees.csv");
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);
csv.WriteRecords(employees);using System.Globalization;
using System.IO;
using CsvHelper;
using var writer = new StreamWriter("employees.csv");
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);
csv.WriteRecords(employees);Imports System.Globalization
Imports System.IO
Imports CsvHelper
Using writer As New StreamWriter("employees.csv")
Using csv As New CsvWriter(writer, CultureInfo.InvariantCulture)
csv.WriteRecords(employees)
End Using
End UsingImports System.Globalization
Imports System.IO
Imports CsvHelper
Using writer As New StreamWriter("employees.csv")
Using csv As New CsvWriter(writer, CultureInfo.InvariantCulture)
csv.WriteRecords(employees)
End Using
End UsingIronXLの実装:
using IronXL;
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("employees");
int rowIndex = 1;
foreach (var emp in employees)
{
workSheet[$"A{rowIndex}"].Value = emp.Name;
workSheet[$"B{rowIndex}"].Value = emp.Salary;
workSheet[$"C{rowIndex}"].Value = emp.StartDate;
rowIndex++;
}
workBook.SaveAsCsv("employees.csv", ",");using IronXL;
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("employees");
int rowIndex = 1;
foreach (var emp in employees)
{
workSheet[$"A{rowIndex}"].Value = emp.Name;
workSheet[$"B{rowIndex}"].Value = emp.Salary;
workSheet[$"C{rowIndex}"].Value = emp.StartDate;
rowIndex++;
}
workBook.SaveAsCsv("employees.csv", ",");Imports IronXL
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("employees")
Dim rowIndex As Integer = 1
For Each emp In employees
workSheet($"A{rowIndex}").Value = emp.Name
workSheet($"B{rowIndex}").Value = emp.Salary
workSheet($"C{rowIndex}").Value = emp.StartDate
rowIndex += 1
Next
workBook.SaveAsCsv("employees.csv", ",")Imports IronXL
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("employees")
Dim rowIndex As Integer = 1
For Each emp In employees
workSheet($"A{rowIndex}").Value = emp.Name
workSheet($"B{rowIndex}").Value = emp.Salary
workSheet($"C{rowIndex}").Value = emp.StartDate
rowIndex += 1
Next
workBook.SaveAsCsv("employees.csv", ",")| 特徴 | CsvHelper | IronXL |
|---|---|---|
| 基本的なCSVの書き方 | はい | はい |
| ExcelからCSVへの変換 | なし | はい |
| 式の評価 | なし | はい |
| 複数シートの取り扱い | なし | はい |
| データ型の保存 | マニュアル | 自動翻訳 |
| Excel形式のサポート(XLSX、XLS、XLSM) | なし | はい |
| MS Officeは不要 | はい | はい |
| セルの書式設定とスタイル | なし | はい |
| クロスプラットフォーム対応(.NET 10対応) | はい | はい |
CsvHelperは、POCOオブジェクトの単純なシリアル化を効率的に処理します。 IronXL は、既存の Excel ファイルをロードしたり、エクスポート前に数式を評価したり、きめ細かく管理する ワークシート範囲 を管理する必要がある場合に追加機能を提供します。 ワークフローでビジネスユーザーから.xlsxファイルを受け取り、それをCSVに変換して下流システムに送る場合、IronXLを使用することで変換ステップを1つ削減できます。
IronXLはCSVエクスポートに関してどのようなEnterprise機能を提供していますか?
IronXLのSaveAsCsvメソッドは、いくつかの本番対応機能を備えています。
| 特徴 | 翻訳内容 | 使用事例 |
|---|---|---|
| カスタム区切り文字 | コンマ、セミコロン、タブ、または任意の文字 | 地域的な互換性 |
| エンコードオプション | UTF-8、UTF-16、およびカスタムエンコーディング | 国際文字セット |
| 式の評価 | エクスポート前にExcelの数式を計算します | 財務報告、動的データ |
| クロスプラットフォームサポート | Windows, Linux, macOS | クラウドおよびコンテナの導入 |
| 複数シートのエクスポート | ワークシートごとに1つのCSVファイル | 複雑なワークブック構造 |
| RFC 4180準拠 | 特殊文字の自動引用 | 相互運用性の保証 |
エクスポート前に セルデータのフォーマット を適用して、CSV出力で数値、通貨、日付がどのように表示されるかを制御できます。 大きなデータセットの場合、ワークシート範囲操作 を使ってデータをチャンク処理し、メモリ使用量を予測可能なものに保ちます。
クロスプラットフォーム対応により、コードを変更することなく、IronXLを利用したCSV生成機能をKubernetesやAzure App ServiceのLinuxコンテナにデプロイできます。 このライブラリには管理されていない依存関係が含まれていないため、どのオペレーティングシステムでも同じように動作します。 サポートされているランタイムの詳細については、IronXLプラットフォームの互換性ガイドを参照してください。
CSVエクスポートでよくある問題にどう対処しますか?
大規模なCSVエクスポートを扱う場合、いくつかの予測可能な問題が発生します。それぞれの問題への対処法を以下に示します。
データ内の特殊文字: IronXLは、セル値内の引用符、カンマ、改行を自動的にエスケープします。 文字列を前処理したり、独自のエスケープロジックを記述したりする必要はありません。ライブラリがRFC 4180の引用規則を内部的に処理します。
大規模ファイルの処理: 数万行のワークブックには、ワークシート範囲 を使用してデータをバッチ処理します。 最終エクスポート前に中間シートに書き込むことで、メモリ割り当てを制御できます。
エンコーディングに関する問題:セル値に国際文字、アジア言語の文字、または絵文字が含まれる場合は、UTF-8エンコーディングを明示的に指定してください。 IronXLはUTF-8とUTF-16エンコーディングを標準でサポートしているため、サードパーティ製のエンコーディングライブラリは必要ありません。
データの欠落または入力ミス: IronXLはデフォルトで数値および日付形式を保持します。 セルに欠損データを参照する数式が含まれている場合、EvaluateAll()は空白のテキストを黙って出力するのではなく、エラー値に解決されるため、データ品質の問題がパイプラインの早い段階で明らかになります。
区切り文字の競合: データに区切り文字が含まれている場合(たとえば、コンマを区切り文字として使用しているときに$1,200.00を含む価格フィールド)、IronXLはRFC 4180の規則に従い、値を二重引用符で自動的に囲みます。
詳細なガイダンスについては、 IronXL CSVドキュメント、 APIリファレンス、およびサポートリソースを参照してください。
IronXLでCSVファイルを読み込んで解析するにはどうすればよいですか?
CSVファイルへの書き込みは、話の半分に過ぎない。 IronXLはCSVの読み込みと解析にも対応しており、カンマ区切りのデータをワークブック構造に読み込み、クエリ、フィルタリング、変換を行った後、任意の形式にエクスポートできます。
using IronXL;
// Load an existing CSV file into a workbook
WorkBook workBook = WorkBook.Load("sales_data.csv");
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Iterate over rows and process data
foreach (var row in workSheet.Rows)
{
string product = row["A"].ToString();
int quantity = row["B"].IntValue;
decimal price = (decimal)row["C"].DoubleValue;
Console.WriteLine($"Product: {product}, Qty: {quantity}, Price: {price:C}");
}
// Apply a filter and re-export to a new CSV
workBook.SaveAsCsv("filtered_output.csv", ",");using IronXL;
// Load an existing CSV file into a workbook
WorkBook workBook = WorkBook.Load("sales_data.csv");
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Iterate over rows and process data
foreach (var row in workSheet.Rows)
{
string product = row["A"].ToString();
int quantity = row["B"].IntValue;
decimal price = (decimal)row["C"].DoubleValue;
Console.WriteLine($"Product: {product}, Qty: {quantity}, Price: {price:C}");
}
// Apply a filter and re-export to a new CSV
workBook.SaveAsCsv("filtered_output.csv", ",");Imports IronXL
' Load an existing CSV file into a workbook
Dim workBook As WorkBook = WorkBook.Load("sales_data.csv")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
' Iterate over rows and process data
For Each row In workSheet.Rows
Dim product As String = row("A").ToString()
Dim quantity As Integer = row("B").IntValue
Dim price As Decimal = CType(row("C").DoubleValue, Decimal)
Console.WriteLine($"Product: {product}, Qty: {quantity}, Price: {price:C}")
Next
' Apply a filter and re-export to a new CSV
workBook.SaveAsCsv("filtered_output.csv", ",")Imports IronXL
' Load an existing CSV file into a workbook
Dim workBook As WorkBook = WorkBook.Load("sales_data.csv")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
' Iterate over rows and process data
For Each row In workSheet.Rows
Dim product As String = row("A").ToString()
Dim quantity As Integer = row("B").IntValue
Dim price As Decimal = CType(row("C").DoubleValue, Decimal)
Console.WriteLine($"Product: {product}, Qty: {quantity}, Price: {price:C}")
Next
' Apply a filter and re-export to a new CSV
workBook.SaveAsCsv("filtered_output.csv", ",")IronXL経由でCSVファイルを読み込むと、並べ替え、フィルタリング、数式評価など、ワークシートAPIのすべての機能を利用できます。 SaveAsメソッドを使用すれば、読み込んだデータをExcelファイルとして保存することもできます。これにより、CSVファイルをXLSXファイルに変換する処理を1回のメソッド呼び出しで実行できます。これは、レポート生成サービスを構築する際によく求められる要件です。
CSVデータをエクスポートする前に、どのように検証すればよいですか?
エクスポート前のデータ検証は、下流のパイプライン障害を防ぐ。 IronXLセル値とセル型に直接アクセスできるため、書き込み前にnull値のチェック、数値範囲の強制、不正な日付の拒否などを行うことができます。
using IronXL;
WorkBook workBook = WorkBook.Load("input.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
var errors = new List<string>();
for (int rowIdx = 1; rowIdx <= workSheet.RowCount; rowIdx++)
{
string productName = workSheet[$"A{rowIdx}"].StringValue;
double price = workSheet[$"C{rowIdx}"].DoubleValue;
if (string.IsNullOrWhiteSpace(productName))
errors.Add($"Row {rowIdx}: Product name is empty.");
if (price <= 0)
errors.Add($"Row {rowIdx}: Price must be greater than zero (found {price}).");
}
if (errors.Count == 0)
{
workBook.SaveAsCsv("validated_output.csv", ",");
Console.WriteLine("Export complete.");
}
else
{
foreach (var error in errors)
Console.WriteLine(error);
}using IronXL;
WorkBook workBook = WorkBook.Load("input.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
var errors = new List<string>();
for (int rowIdx = 1; rowIdx <= workSheet.RowCount; rowIdx++)
{
string productName = workSheet[$"A{rowIdx}"].StringValue;
double price = workSheet[$"C{rowIdx}"].DoubleValue;
if (string.IsNullOrWhiteSpace(productName))
errors.Add($"Row {rowIdx}: Product name is empty.");
if (price <= 0)
errors.Add($"Row {rowIdx}: Price must be greater than zero (found {price}).");
}
if (errors.Count == 0)
{
workBook.SaveAsCsv("validated_output.csv", ",");
Console.WriteLine("Export complete.");
}
else
{
foreach (var error in errors)
Console.WriteLine(error);
}Imports IronXL
Dim workBook As WorkBook = WorkBook.Load("input.xlsx")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
Dim errors As New List(Of String)()
For rowIdx As Integer = 1 To workSheet.RowCount
Dim productName As String = workSheet($"A{rowIdx}").StringValue
Dim price As Double = workSheet($"C{rowIdx}").DoubleValue
If String.IsNullOrWhiteSpace(productName) Then
errors.Add($"Row {rowIdx}: Product name is empty.")
End If
If price <= 0 Then
errors.Add($"Row {rowIdx}: Price must be greater than zero (found {price}).")
End If
Next
If errors.Count = 0 Then
workBook.SaveAsCsv("validated_output.csv", ",")
Console.WriteLine("Export complete.")
Else
For Each error As String In errors
Console.WriteLine(error)
Next
End IfImports IronXL
Dim workBook As WorkBook = WorkBook.Load("input.xlsx")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
Dim errors As New List(Of String)()
For rowIdx As Integer = 1 To workSheet.RowCount
Dim productName As String = workSheet($"A{rowIdx}").StringValue
Dim price As Double = workSheet($"C{rowIdx}").DoubleValue
If String.IsNullOrWhiteSpace(productName) Then
errors.Add($"Row {rowIdx}: Product name is empty.")
End If
If price <= 0 Then
errors.Add($"Row {rowIdx}: Price must be greater than zero (found {price}).")
End If
Next
If errors.Count = 0 Then
workBook.SaveAsCsv("validated_output.csv", ",")
Console.WriteLine("Export complete.")
Else
For Each error As String In errors
Console.WriteLine(error)
Next
End Ifこのパターンは、不正な行を黙ってエクスポートするのではなく、拒否してログに記録する必要があるETLパイプラインにおいて特に有効です。 セルデータアクセスメソッドは、IronXLのCellオブジェクト上で、厳密に型付けされた値を返し、暗黙の型強制エラーのリスクを軽減します。
IronXLでCSVファイルを作成するにはどうすれば良いですか?
IronXLは、 CSVファイルの書き込みを、解析という難題から直接的な操作へと変革します。 CSV機能とExcelワークブックのサポート、数式評価、自動型処理を組み合わせることで、複数のライブラリの管理や手動データ変換の複雑さを解消します。
無料トライアルでは、開発期間中にライセンスキーを必要とせずに、複数シートのエクスポート、数式評価、クロスプラットフォーム展開など、すべての機能にフルアクセスできます。 本番環境への移行準備が整ったら、ライセンスは商用利用をカバーする単一の開発者向けティアから始まります。
始めるにあたって役立つ主なリソース:
- IronXLドキュメント-- 完全なAPIリファレンスと操作ガイド CSVからExcelへの変換ガイド- フォーマット変換の詳細な手順
- DataTable エクスポートチュートリアル -- データベース駆動のエクスポートパターン
- ワークシート範囲操作 -- 大規模データセットの効率的な処理 -トラブルシューティングガイド- 一般的な統合問題の解決策
本番環境で使用可能なCSVワークフローを構築する準備はできていますか? 無料トライアルを開始して、5分以内に最初のCSVエクスポートを実行しましょう。
Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。
