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

プロジェクトの作成 - コンソールアプリケーション
- 次へをクリックします。
- 追加情報画面で使用したいフレームワークバージョンを指定します。 この例では.NET Framework 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 to https://www.nuget.org/packages/IronXL.Excel
- "パッケージをダウンロード"を選択
- ダウンロードしたパッケージをダブルクリックします
- パッケージがインストールされます
- Visual Studio プロジェクトをリロードして、使用を開始します
2.3. DLLで手動インストール
IronXL C#ライブラリをダウンロードしてインストールする別の方法として、開発者コマンドプロンプトを使用してIronXLNuGetパッケージをインストールする次のステップを実行します。
- 開発者コマンドプロンプト を開く - 通常は Visual Studio フォルダ内にあります。
- 次のコマンドを入力します:
- Enterキーを押します
- これにより、パッケージのダウンロードとインストールが行われます
- Visual Studio プロジェクトをリロードして、使用を開始します
2.4. 必要なusingディレクティブを追加
- ソリューションエクスプローラーで Program.cs ファイルを右クリックして、[コードの表示] をクリックします。
- コードファイルの冒頭に以下のusingディレクティブを追加します。
using IronXL;Imports IronXLImports IronXLこれで完了です! IronXLはダウンロードされ、インストールされ、使用準備が整いました。 ただし、その前に CsvHelper をインストールするべきです。
3. CSVWriterのインストール
3.1. NuGet パッケージ マネージャー コンソールを使う場合
CSVWriterを使用するには、CsvHelper C# ライブラリをダウンロードしてインストールする必要があります。 そのためには、開発者コマンドプロンプトでNuGetパッケージをインストールするための以下の手順を使用します。
- 開発者コマンドプロンプト を開く - 通常は Visual Studio フォルダ内にあります。
- 次のコマンドを入力します:
- Enterキーを押します
- これにより、パッケージのダウンロードとインストールが行われます
- Visual Studio プロジェクトをリロードして、使用を開始します
- 実装のためにCsvHelper.CsvWriterメソッドの詳細を確認します。
3.2. 直接ダウンロード
NuGetウェブサイトからダウンロード: 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")' 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 ファイルを読み取りおよび操作
IronXL WorkBookクラスは、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")' 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")' 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' 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()' 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.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 ClassPublic 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"
}
}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 UsingUsing 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 UsingDim 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はオープンに商用化されているC# Excelライブラリです。 開発には無料で使用でき、商用デプロイメントのためにいつでもライセンスを取得できます。 ライセンスが利用可能です。シングルプロジェクト、シングル開発者、代理店、グローバル企業向けに加え、SaaSやOEM再配布向けにも対応しています。 すべてのライセンスには30日間の返金保証、1年間の製品サポートとアップデート、デブ/スタージング/プロダクションのための有効性、および永久ライセンス(1回の購入)が含まれています。 Liteパッケージは$999から始まります。
提供されたセパレータを持つCSVWriterはコンマ区切り要素であり、商用に優しい使用に対して完全に無料です。
7. まとめと結論
概要
IronXLは、Excelファイルを操作するために必要なすべてを提供する完璧なライブラリです。さまざまなフォーマットをXLSXに変換し、また、XLSXからCSVのような他のフォーマットに変換する機能を提供します。この相互変換は、他のファイルフォーマットを簡単に操作する柔軟性をユーザーに提供します。
一方、CSVWriterはCSVファイルフォーマットだけで機能し、非常に限定的なオプションです。 ユーザーは異なるファイルフォーマットの間で切り替えることができませんが、IronXLでは可能です。 すべてのサンプルコードはCsvHelperのドキュメントファイルにあります。 このドキュメントは、プロジェクトでCSVWriterを使用する方法に関するガイドラインを提供します。
結論
IronXLは、複数のフォーマットで作業をサポートするため、CsvHelper.CSVWriterに対して明確な利点を持っています。 さらに、選択に応じた数式とスタイルを適用できますが、CsvHelperはCSVファイルの読み書きのみを許可しており、限られたオプションしかありません。 加えて、新しいレコードを既存のCSVファイルに追加することはできず、前のエントリを単に上書きします。
Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。
