IronXLとCsvHelperの比較
CSVファイルの操作は、挑戦的な作業になることがあります。 多くのライブラリが、Microsoft Excelをインストールせずに開発者を支援します。
この記事では、C# .NET技術を使用して、CSV形式または標準のXLSX形式のMicrosoft Excel文書をプログラム的に操作する方法を、IronXLとCsvHelperという2 つの最も人気のあるライブラリを使用して比較しながら説明します。
まずは両方のライブラリが提供するものを見てみましょう。
IronXLライブラリ
IronXLは、C#でMicrosoft Excel文書の読み取りと編集を容易にする.NETのライブラリです。 IronXL.Excelは、さまざまなスプレッドシート形式を読み取るためのスタンドアローンの.NETソフトウェアライブラリです。 Microsoft Excelのインストールは不要であり、Interopにも依存しません。CSVファイルととてもスムーズに動作します。
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"]構文。 直感的に範囲を結合・作成します。 - ソート — 範囲、列、行のソート。
- スタイリング — セルの視覚スタイル、フォント、サイズ、背景パターン、境界、配置、番号フォーマット。
CsvHelper
CSVファイルの読み取りと書き込みを行う.NETライブラリ。 非常に高速で柔軟、かつ使いやすい。 カスタムクラスオブジェクトの読み書きをサポート。 すべてのサンプルコードはCsvHelperのドキュメント内にあります。
C#でCsvHelperを使う方法
- CSVファイルを読み取るためにCsvHelper C#ライブラリをインストールする
CsvConfigurationクラスを利用して CSV の設定を行う- C#組み込み
StreamReaderでファイルを開く - Input the instances made in steps 2 & 3 to
CsvReaderclass to read - CsvHelper
DefaultTypeConverterクラスを継承して CSV データを変換する
CsvHelperの特徴
- 高速: クラスをフライでコンパイルして極めて高速なパフォーマンスを実現
- 柔軟: 書き込みは保守的、読み込みは自由
- 簡単:
GetRecords()と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サイトに直接アクセスしてパッケージをダウンロードすることによって行うことが可能です。 手順は次の通りです:
- https://www.nuget.org/packages/IronXL.Excel に移動します
- "パッケージをダウンロード"を選択
- ダウンロードしたパッケージをダブルクリックします
- パッケージがインストールされます
- Visual Studio プロジェクトをリロードして、使用を開始します
2.3. DLLで手動インストール
もう一つのIronXL C#ライブラリをダウンロードしてインストールする方法は、Developer Command Promptを使用してIronXL NuGetパッケージをインストールする以下の手順を実行することです。
- 開発者コマンドプロンプト を開く — 通常は Visual Studio フォルダ内にあります。
- 次のコマンドを入力します:
PM> Install-Package IronXL.Excel - Enterキーを押します
- これにより、パッケージのダウンロードとインストールが行われます
- Visual Studio プロジェクトをリロードして、使用を開始します
2.4. 必要なusingディレクティブを追加
- ソリューションエクスプローラーで Program.cs ファイルを右クリックして、[コードの表示] をクリックします。
- コードファイルの冒頭に以下のusingディレクティブを追加します。
using IronXL;using IronXL;これで完了です! IronXLはダウンロードされ、インストールされ、使用準備が整いました。 ただし、その前に CsvHelper をインストールするべきです。
3. CsvHelper のインストール
3.1. NuGet パッケージ マネージャー コンソールを使う場合
CsvHelper C# ライブラリをダウンロードしてインストールするには、開発者コマンドプロンプトを介して NuGet パッケージ をインストールするための次の手順を使用します。
- 開発者コマンドプロンプト を開く — 通常は Visual Studio フォルダ内にあります。
- 次のコマンドを入力します:
PM> Install-Package CsvHelper -Version 27.2.1 - Enterキーを押します
- これにより、パッケージのダウンロードとインストールが行われます
- Visual Studio プロジェクトをリロードして、使用を開始します
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 convert it to an Excel format
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Access the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;
// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");// Load the CSV file and convert it to an Excel format
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Access the default worksheet
WorkSheet ws = 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");各 WorkBook は複数の WorkSheet オブジェクトを含むことができます。 これらはExcelドキュメントのワークシートを表しています。 ワークブックにワークシートがある場合、次のようにして名前で取得します:
// Open the sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");// Open the sheet for reading
var 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);
}ワークブックとワークシートを読み込んだ後、次のコード例を使用して、数式の変更を行ったり、特定のセルに適用することができます。 コードは次の通りです:
// Set formulas in specific cells
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 in specific cells
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を使用することで簡単なプロセスです。 次のコードは、単にExcelファイルをCSV形式で SaveAsCsv メソッドを利用して保存します。
// Load the Excel Workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
// Save the workbook as a CSV file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// This will save as "SaveAsCSV.Sheet1.csv"// Load the Excel Workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
// Save the workbook as a CSV file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// This will save as "SaveAsCSV.Sheet1.csv"5. CsvHelper を使用した CSV ファイルの操作
CSVファイルの読み取りは、想像よりも難しいことがあるタスクのひとつです。 CsvHelperライブラリは、型安全で高速かつ柔軟なコードを書きやすくしてくれます。
5.1. CsvHelperでCSVファイルを読み込む
こちらがサンプルのCSVファイルです。それには3つのテキストカラムと1つのナンバーカラムがあります。
FirstName,LastName,Age,IsActive
Ali,Talal,30,Yes
Affan,Ahmad,31,No
Saad,Bhatti,31,Yes各行を Person タイプのオブジェクトにマッピングします。
// Define the Person class to map CSV records
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int? Age { get; set; }
public string IsActive { get; set; }
}// Define the Person class to map CSV records
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int? Age { get; set; }
public string IsActive { get; set; }
}私たちのCSVファイルを読むためのコードは以下です。
// Define the path to the CSV file
var fileName = @"<path to our CSV file>";
// Configure CsvHelper
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
Encoding = Encoding.UTF8,
Delimiter = ","
};
// Read CSV file
using (var fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (var textReader = new StreamReader(fs, Encoding.UTF8))
using (var csv = new CsvReader(textReader, configuration))
{
var data = csv.GetRecords<Person>();
// Iterate over each person record
foreach (var person in data)
{
// Process each Person object
}
}
}// Define the path to the CSV file
var fileName = @"<path to our CSV file>";
// Configure CsvHelper
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
Encoding = Encoding.UTF8,
Delimiter = ","
};
// Read CSV file
using (var fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (var textReader = new StreamReader(fs, Encoding.UTF8))
using (var csv = new CsvReader(textReader, configuration))
{
var data = csv.GetRecords<Person>();
// Iterate over each person record
foreach (var person in data)
{
// Process each Person object
}
}
}data のタイプは IEnumerable<Person> です。 CsvHelperは、それぞれのカラムを同じ名前のプロパティに自動的にマッピングします。 例えば、FirstName カラムの値は Person.FirstName にマッピングされます。 その後、dataをイテレートして、各行の値にアクセスすることができます。
5.2. CSVファイル内のデータをある型から別の型へ変換する
CSVファイルは主にテキストデータを含んでいます。 例えば、年齢カラムは整数値であり、CSVファイルはテキストのみを含んでいます。 CsvHelperは、文字列から標準の.NET型(Boolean, Int32, Int64, Enum)にデータを変換することができます。 私たちの場合、IsActiveというブールデータ型があり、True/False のみを持つことができ、標準ではない値を含んでいます。 カスタムコンバーターを作成することで、これを変換することができます。 コードのスタイリングは次の通りです。
// Custom Boolean Converter for CsvHelper
public class CustomBooleanConverter : DefaultTypeConverter
{
public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
{
// Convert "Yes" to true and anything else to false
return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
}
}// Custom Boolean Converter for CsvHelper
public class CustomBooleanConverter : DefaultTypeConverter
{
public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
{
// Convert "Yes" to true and anything else to false
return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
}
}たとえboolが標準の.NET型であっても、デフォルトのコンバーターはTrue/Falseしか処理できませんが、私たちのCSVファイルにはYes/Noがあります。 ここでは、DefaultTypeConverterをサブクラス化し、ConvertFromStringメソッドをオーバーライドする必要があります。
6. ライセンス
IronXL is an openly commercial C# Excel library. 開発には無料で使用でき、商用デプロイメントのためにいつでもライセンスを取得できます。 Licenses are available for single-project use, single developers, agencies, and global corporations, as well as SaaS and OEM redistribution. すべてのライセンスには30日間の返金保証、1年間の製品サポートとアップデート、デブ/スタージング/プロダクションのための有効性、および永久ライセンス(1回の購入)が含まれています。 Liteパッケージは$799から始まります。
CsvHelper — CSVファイルの読み取りと書き込みは商業利用に完全に無料です。
7. まとめと結論
概要
IronXLはExcelファイルを操作するために必要なすべてを提供する完全なライブラリです。使用が簡単で、さまざまな形式をXLSXに、またXLSXをCSVなどの他の形式に変換する機能を提供します。この相互変換は、さまざまなファイル形式を簡単に操作する柔軟性をユーザーに提供します。
一方、CsvHelperは、CSVファイル形式と特に連携するために設計されており、CSVファイルのみを処理できます。 すべてのサンプルコードはCsvHelperのドキュメントファイルにあります。 ドキュメントでは、プロジェクトでCsvHelperを使用する方法についてのガイドラインが示されています。
結論
IronXLは複数の形式で作業するユーザーをサポートしているため、CsvHelperに対して明らかな利点があります。 さらに、選択に応じて数式やスタイルを適用することができますが、CsvHelperは限られたオプションでCSVファイルの読み書きしかできません。 また、新しいレコードを既存のCSVファイルに追加することはできず、以前のエントリを上書きしてしまいます。
よくある質問
C#を使用してExcelファイルを異なる形式に変換するにはどうすればよいですか?
IronXLを使用すると、ExcelファイルをXLS、XLSX、CSV、TSVなどさまざまな形式に変換できます。IronXLでファイルを読み込んで、柔軟なエクスポートオプションを使用して希望の形式で保存することで実行できます。
Excelファイル操作においてCsvHelperに対するIronXLの利点は何ですか?
IronXLは、XLS、XLSX、CSVを含む複数のExcel形式での作業に対する包括的な機能を提供します。データ操作、スタイリング、数式の適用などの機能をサポートしており、大規模なExcelファイル処理を必要とするプロジェクトに理想的です。対照的に、CsvHelperは高速で効率的なCSVファイル操作に特化しています。
C#プロジェクトのためにIronXLをインストールするにはどうすればよいですか?
Visual StudioのNuGetパッケージマネージャーで「IronXL」を検索してインストールできます。あるいは、NuGetパッケージを直接ダウンロードするか、プロジェクトでDLLを参照して手動でインストールすることもできます。
Microsoft ExcelをインストールしなくてもIronXLを使用できますか?
はい、IronXLはシステムにMicrosoft Excelをインストールする必要がありません。独立して動作し、さまざまな形式でExcelファイルを読み取り、編集、作成することができます。
CsvHelperを使ってCSVファイルを読み書きするにはどうすればよいですか?
CsvHelperを使用すると、CSVレコードをマップするクラスを定義し、CsvHelperの設定を構成し、CsvReaderとCsvWriterを使用してCSVファイル操作を簡単に行うことができます。
CSVファイル処理のためにCsvHelperが人気の理由は何ですか?
CsvHelperは、速度、柔軟性、使いやすさで知られています。カスタムクラスオブジェクトとタイプ変換をサポートしており、CSVデータ処理に特化したプロジェクトで好まれる選択肢となっています。
IronXLの使用にライセンス要件はありますか?
はい、商用環境でIronXLを展開するには有料ライセンスが必要です。CsvHelperは商業利用が無料であるのに対し、この点が異なります。
どのようなプロジェクトがIronXLの恩恵を受けるでしょうか?
スタイリング、データの並べ替え、数式計算など、さまざまなExcelファイル形式の広範な操作を必要とするプロジェクトは、その堅牢な機能セットのおかげでIronXLから最大の利益を得るでしょう。






