IronXLとCsvWriterの比較
CSVファイルの操作は、挑戦的な作業になることがあります。 しかし、今日では、多くのライブラリがこの作業を支援するために利用可能であり、Microsoft Excelをインストールする必要はありません。
この記事では、C# .NETテクノロジーでMicrosoft Excelドキュメントをプログラム的に操作する方法を議論し、比較します。Excel標準形式やCSV形式で、IronXLとCSVWriterという2つの最も人気のあるライブラリを使用します。
まずは両方のライブラリが提供するものを見てみましょう。
IronXLライブラリ
IronXLは、C#でMicrosoft Excel文書の読み取りと編集を容易にする.NETのライブラリです。 IronXL.Excelは、さまざまなスプレッドシート形式を読み取るためのスタンドアローンの.NETソフトウェアライブラリです。 Microsoft Excelのインストールを必要とせず、Interopにも依存しません。
IronXLは直感的なC# APIであり、.NETでExcelスプレッドシートファイルを読み取り、編集し、作成することが可能です。非常に高速なパフォーマンスを提供します。 IronXLは、.NET Core、.NET Framework、Xamarin、モバイル、Linux、macOS、およびAzureを完全にサポートしています。
IronXLは、C#向けの優れた.NETコアおよび.netフレームワークのExcelスプレッドシートライブラリです。
IronXLの機能セット
- データをロード、読み取り、編集 — XLS/XLSX/CSV/TSV から
- 保存とエクスポート — XLS/XLSX/CSV/TSV/JSON へ
- 範囲 — 使いやすいWorkSheet ["A1:B10"]構文。 直感的に範囲を結合・作成します。
- ソート — 範囲、列、行のソート。
- スタイリング — セルの視覚スタイル、フォント、サイズ、背景パターン、境界線、配置、数値フォーマット。
CSVWriter
CSVファイルを書き込むための.NETライブラリ。 非常に高速で柔軟、かつ使いやすい。 カスタムクラスオブジェクトの書き込みをサポート。
CsvWriterの特徴
- 高速: クラスをフライでコンパイルして極めて高速なパフォーマンスを実現
- 柔軟: 書き込みは保守的、読み込みは自由
- 簡単:
GetRecords()とWriteRecords(records)のように簡単 - 高度に設定可能
- Linux対応モード
- メモリ使用量が少ない
1. コンソールアプリケーションを作成
コンソールアプリケーションを作成する手順は以下の通りです:
- Visual Studio 2022 IDE を開始します。
- "新しいプロジェクトを作成"をクリックします。
- "新しいプロジェクトを作成"ページで、言語ドロップダウンリストからC#、プラットホームリスト からWindows、プロジェクト種類リストからコンソールを選択します。
- 表示されるプロジェクトテンプレートからコンソールアプリ (.NET フレームワーク)を選びます。

プロジェクトの作成 - コンソールアプリケーション
- 次へをクリックします。
- 追加情報画面で、使用したいフレームワークバージョンを指定します。 この例では.NETフレームワーク4.8を使用します。

プロジェクトの作成 - .NET Framework
- 作成をクリックしてプロセスを完了します。
プロジェクトが作成され、ライブラリのテストの準備がほぼ整いました。 ただし、ライブラリをプロジェクトにインストールして統合する必要があります。 まずIronXLをインストールしましょう。
2. IronXL C#ライブラリのインストール
IronXLライブラリをダウンロードしてインストールする方法としては以下のものがあります:
- Visual StudioでNuGetパッケージを使用します
- NuGet パッケージを直接ダウンロードします
- DLLで手動インストールします
それぞれを詳しく見ていきましょう。
2.1. NuGetパッケージを使用したVisual Studio経由で
Visual Studioは、NuGetパッケージをプロジェクトにインストールするNuGetパッケージマネージャーを提供しています。 これにアクセスするには、プロジェクトメニューを通じて、またはソリューションエクスプローラでプロジェクトを右クリックして行います。

NuGet パッケージの管理を選択
- 今度は、ブラウズ タブから、IronXL.Excel を検索 -> インストールします

IronXLを検索
- 完了しました。
2.2. NuGetパッケージを直接ダウンロード
これはNuGetサイトに直接アクセスしてパッケージをダウンロードすることによって行うことが可能です。 手順は次の通りです:
- Navigate tohttps://www.nuget.org/packages/IronXL.Excel
- "パッケージをダウンロード"を選択
- ダウンロードしたパッケージをダブルクリックします
- パッケージがインストールされます
- Visual Studio プロジェクトをリロードして、使用を開始します
2.3. DLLで手動インストール
IronXL C#ライブラリをダウンロードしてインストールする別の方法として、次の手順を使用して開発者コマンドプロンプトを介してIronXLNuGetパッケージをインストールします。
- 開発者コマンドプロンプトを開きます — 通常、Visual Studioフォルダにあります。
- 次のコマンドを入力します:
Install-Package IronXL.Excel
- Enterキーを押します
- これにより、パッケージのダウンロードとインストールが行われます
- Visual Studio プロジェクトをリロードして、使用を開始します
2.4. 必要なusingディレクティブを追加
- ソリューションエクスプローラーでProgram.csファイルを右クリックし、[コードの表示] をクリックします。
- 次のusingディレクティブをコードファイルの先頭に追加します:
using IronXL;using IronXL;Imports IronXLこれで完了です! IronXLはダウンロードされ、インストールされ、使用準備が整いました。 ただし、その前に CsvHelper をインストールするべきです。
3. CSVWriterのインストール
3.1. NuGet パッケージ マネージャー コンソールを使う場合
CSVWriterを使用するには、CsvHelper C# ライブラリをダウンロードしてインストールする必要があります。 そのためには、次の手順を使用して開発者コマンドプロンプトを介してNuGetパッケージをインストールします。
- 開発者コマンドプロンプトを開きます — 通常、Visual Studioフォルダにあります。
- 次のコマンドを入力します:
Install-Package CsvHelper -Version 27.2.1
- Enterキーを押します
- これにより、パッケージのダウンロードとインストールが行われます
- Visual Studio プロジェクトをリロードして、使用を開始します
- 実装のためにCsvHelper.CsvWriterメソッドの詳細を確認します。
3.2. 直接ダウンロード
Download from the NuGet website: https://www.nuget.org/packages/CsvHelper/
4. IronXL を使用した CSV ファイルの操作
カンマ区切り値 (CSV)ファイルは、カンマを使って値を分ける区切りテキストファイルです。 ファイルの各行はデータレコードです。 これらのファイルを計算用に操作することは挑戦的なタスクですが、IronXLはこれを非常に簡単に達成するための優れたオプションを提供しており、Microsoft Excelを使用せずに済みます。 まず最初に、CSVファイルを通常のExcelファイルに変換しましょう。
4.1. CSVファイルをExcel形式に変換
このプロセスは非常に簡単で簡潔です。 通常、1行のコードで完了します。
CSVからExcel形式へ:
// Load the CSV file and specify the format and delimiter
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Get the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;
// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");// Load the CSV file and specify the format and delimiter
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Get the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;
// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");' Load the CSV file and specify the format and delimiter
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
' Get the default worksheet
Dim ws As WorkSheet = workbook.DefaultWorkSheet
' Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx")4.2. IronXL を使用して変換された CSV ファイルを読み取りおよび操作
IronXLWorkBookクラスは、Excelシートを表します。 C#を使ってExcelファイルを開くには、WorkBook.Loadを使用し、Excelファイル(.xlsx)のパスを指定します。 以下の1行コードは、読み取りのためにファイルを開くために使用されます:
// Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");// Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");' Load WorkBook
Dim workbook = WorkBook.Load("Spreadsheets\\sample.xlsx")各WorkBookには複数のWorkSheetオブジェクトを含めることができます。 これらはExcelドキュメントのワークシートを表しています。 ワークブックにワークシートがある場合、次のようにして名前で取得します:
// Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");// Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");' Open Sheet for reading
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")セル値を読み取るためのコード:
// Read from Ranges of cells elegantly.
foreach (var cell in worksheet["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}// Read from Ranges of cells elegantly.
foreach (var cell in worksheet["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}' Read from Ranges of cells elegantly.
For Each cell In worksheet("A2:A10")
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cellワークブックとワークシートをロードして読み取った後、以下のコードサンプルを使用して、数式を変更したり、特定のセルに数式を適用したりできます。 コードは次の通りです:
// Set Formulas
worksheet["A1"].Formula = "Sum(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "Max(C3:C7)";
// Force recalculate all formula values in all sheets.
workbook.EvaluateAll();// Set Formulas
worksheet["A1"].Formula = "Sum(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "Max(C3:C7)";
// Force recalculate all formula values in all sheets.
workbook.EvaluateAll();' Set Formulas
worksheet("A1").Formula = "Sum(B8:C12)"
worksheet("B8").Formula = "=C9/C11"
worksheet("G30").Formula = "Max(C3:C7)"
' Force recalculate all formula values in all sheets.
workbook.EvaluateAll()4.3. Excel文書をCSVファイルに保存する
CSVファイルの書き込みは、IronXLを使用することで簡単なプロセスです。 以下のコードでは、SaveAsCsvメソッドを使用して、ExcelファイルをCSV形式で単純に保存します。
// Load the workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
// Save as .csv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// Saved as : SaveAsCSV.Sheet1.csv// Load the workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
// Save as .csv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// Saved as : SaveAsCSV.Sheet1.csv' Load the workbook
Dim wb As WorkBook = WorkBook.Load("Normal_Excel_File.xlsx")
' Save as .csv file
wb.SaveAsCsv("SaveAsCSV.csv", ",")
' Saved as : SaveAsCSV.Sheet1.csv5. CSVWriterを使用してCSVデータを操作する
CSVファイルにデータを書くことは一般的な操作です。 CSVHelperメソッドCSVWriterとセパレータを使用すれば、すべての文字と改行を簡単に扱うCSVライターが作成できます。 ここではCSVWriterを使用してデータを書く方法を見ていきます。
5.1. シンプルなコンソールアプリケーションを作成する
提供されたセパレータを使用して、Visual StudioでシンプルなCSVWriterのコンソールアプリを作成します。 プロジェクトが作成されたら、次のステップとしてPersonクラスを作成します:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsLiving { get; set; }
}public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsLiving { get; set; }
}Public Class Person
Public Property Id() As Integer
Public Property Name() As String
Public Property IsLiving() As Boolean
End ClassMainメソッド内で、CSVファイルに書き込むPersonオブジェクトのリストを作成しましょう:
var myPersonObjects = new List<Person>()
{
new Person { Id = 1, IsLiving = true, Name = "John" },
new Person { Id = 2, IsLiving = true, Name = "Steve" },
new Person { Id = 3, IsLiving = true, Name = "James" }
};var myPersonObjects = new List<Person>()
{
new Person { Id = 1, IsLiving = true, Name = "John" },
new Person { Id = 2, IsLiving = true, Name = "Steve" },
new Person { Id = 3, IsLiving = true, Name = "James" }
};Dim myPersonObjects = New List(Of Person)() From {
New Person With {
.Id = 1,
.IsLiving = True,
.Name = "John"
},
New Person With {
.Id = 2,
.IsLiving = True,
.Name = "Steve"
},
New Person With {
.Id = 3,
.IsLiving = True,
.Name = "James"
}
}5.2. デフォルト設定でC#でCSVファイルに書き込む
CsvHelperは、C#でCSVWriterメソッドを使用してCSVを書く標準的な方法として浮上しており、非常に使いやすいです:
using (var writer = new StreamWriter("filePersons.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
csv.WriteRecords(myPersonObjects);
}using (var writer = new StreamWriter("filePersons.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
csv.WriteRecords(myPersonObjects);
}Using writer = New StreamWriter("filePersons.csv")
Using csv = New CsvWriter(writer, CultureInfo.InvariantCulture)
csv.WriteRecords(myPersonObjects)
End Using
End Using5.3. データの追加
プログラムを実行するたびに、古いCSVファイルが上書きされるという事実に注意を払う必要があります。 時には、既存のデータを上書きするのではなく、ファイルの終わりにデータを追加したいことがあります。 CSVWriterは、その提供されたセパレータではファイルを開く/書くことはその責務ではないとして、これを行うためのメソッドを提供しません。 これはFileStreamを使用し、それによってStreamWriterを作成することで達成できます。 これはこの記事の範囲を超えますが、アプリケーションの不可欠な部分であるため、これを行う方法を示します。
var configPersons = new CsvConfiguration(CultureInfo.InvariantCulture)
{
HasHeaderRecord = false
};
using (var stream = File.Open("filePersons.csv", FileMode.Append))
using (var writer = new StreamWriter(stream))
using (var csv = new CsvWriter(writer, configPersons))
{
csv.WriteRecords(myPersonObjects);
}var configPersons = new CsvConfiguration(CultureInfo.InvariantCulture)
{
HasHeaderRecord = false
};
using (var stream = File.Open("filePersons.csv", FileMode.Append))
using (var writer = new StreamWriter(stream))
using (var csv = new CsvWriter(writer, configPersons))
{
csv.WriteRecords(myPersonObjects);
}Dim configPersons = New CsvConfiguration(CultureInfo.InvariantCulture) With {.HasHeaderRecord = False}
Using stream = File.Open("filePersons.csv", FileMode.Append)
Using writer = New StreamWriter(stream)
Using csv = New CsvWriter(writer, configPersons)
csv.WriteRecords(myPersonObjects)
End Using
End Using
End Using既存ファイルへの追加は、追加時に順序が変更される可能性や新しいプロパティが追加された可能性があるため、厄介です。 追加する際にはこの点に注意を払うべきです。
6. ライセンス
IronXL is an openly commercial C# Excel library. It is free for development and can always be licensed for commercial deployment.Licenses are availablefor single-project use, single developers, agencies, and global corporations, as well as SaaS and OEM redistribution. すべてのライセンスには30日間の返金保証、1年間の製品サポートとアップデート、デブ/スタージング/プロダクションのための有効性、および永久ライセンス(1回の購入)が含まれています。 Liteパッケージは$799から始まります。
提供されたセパレータを持つCSVWriterはコンマ区切り要素であり、商用に優しい使用に対して完全に無料です。
7. まとめと結論
概要
IronXLは、Excelファイルを操作するために必要なすべてを提供する完璧なライブラリです。さまざまなフォーマットをXLSXに変換し、また、XLSXからCSVのような他のフォーマットに変換する機能を提供します。この相互変換は、他のファイルフォーマットを簡単に操作する柔軟性をユーザーに提供します。
一方、CSVWriterはCSVファイルフォーマットだけで機能し、非常に限定的なオプションです。 ユーザーは異なるファイルフォーマットの間で切り替えることができませんが、IronXLでは可能です。 すべてのサンプルコードはCsvHelperのドキュメントファイルにあります。 このドキュメントは、プロジェクトでCSVWriterを使用する方法に関するガイドラインを提供します。
結論
IronXLは、複数のフォーマットで作業をサポートするため、CsvHelper.CSVWriterに対して明確な利点を持っています。 さらに、選択に応じた数式とスタイルを適用できますが、CsvHelperはCSVファイルの読み書きのみを許可しており、限られたオプションしかありません。 加えて、新しいレコードを既存のCSVファイルに追加することはできず、前のエントリを単に上書きします。
よくある質問
C#でExcelドキュメントを扱うCSVWriterの代替は何ですか?
IronXLは、C#でExcelドキュメントを扱うCSVWriterの優れた代替です。Microsoft Excelを必要とせずに、XLS、XLSX、CSV、およびTSVなどさまざまなExcel形式を読み取り、編集、エクスポートすることができます。
.NETライブラリを使用して、CSVファイルをExcel形式に変換するにはどうすればよいですか?
IronXLを使用すると、CSVをワークブックにロードし、それをXLSXファイルとして保存することで、CSVファイルを簡単にExcel形式に変換できます。このプロセスには、ファイルを操作して保存するためのシンプルなコードコマンドが含まれます。
IronXLはCSVWriterに比べてどのような利点がありますか?
IronXLは、複数のファイル形式をサポートし、Excelの数式を適用でき、高度な機能としてデータの並べ替えやスタイリングが可能など、CSVWriterに対していくつかの利点を提供します。一方、CSVWriterはCSVファイルの取り扱いに限定されています。
C#プロジェクトにIronXLをインストールするにはどうすればよいですか?
Visual StudioのNuGetパッケージマネージャーを介して、C#プロジェクトにIronXLをインストールできます。あるいは、NuGetパッケージをダウンロードするか、開発者コマンドプロンプトを使用してDLLを手動でインストールすることもできます。
IronXLは.NET CoreおよびAzure環境で使用できますか?
はい、IronXLは.NET CoreやAzureを含む複数のプラットフォームをサポートしており、さまざまな環境でのExcelファイルの操作を要するアプリケーションを開発するための多目的な選択肢となります。
CSVWriterを使用してCSVファイルにカスタムクラスオブジェクトを書き込むことは可能ですか?
はい、CSVWriterはカスタムクラスオブジェクトをCSVファイルに書き込むことをサポートしています。CSVファイルを操作する際にデータを効率的に書き込むための柔軟で使いやすいアプローチを提供します。
商用アプリケーションでIronXLを使用するためのライセンス要件は何ですか?
IronXLは商用利用にライセンスを必要とします。開発目的には無料ですが、デプロイメントのニーズに応じて、単一のプロジェクトからエンタープライズレベルのアプリケーションまでさまざまなライセンスが利用可能です。
IronXLはExcelの数式をどのように処理しますか?
IronXLはスプレッドシート内でのExcelの数式の適用と操作を可能にし、C#アプリケーション内で直接動的なデータ計算と分析のための強力な機能を提供します。
IronXLを使用する際の一般的なトラブルシューティングの問題は何ですか?
IronXLの一般的なトラブルシューティングの問題には、ファイル形式の互換性、データ型の不一致、またはインストールエラーが含まれます。プロジェクトの参照を正しく設定し、データ形式を検証することで、これらの問題を解決できます。
IronXLは既存のExcelファイルにデータを追加できますか?
はい、IronXLは既存のExcelファイルにデータを追加できます。既存のワークブックを開き、新しいデータを追加して保存することで、既存のコンテンツを上書きすることなく変更を加えることができます。






