他のコンポーネントと比較

IronXLとCsvHelperの比較

公開済み 2022年5月9日
共有:

CSVファイルの取り扱いは困難な作業となることがあります。 Microsoft Excelをインストールする必要がなく、開発者がこのタスクを支援するために使用できるライブラリは今日、多く存在します。

この記事では、C# .NET技術を使用して、CSV形式または標準のXLSX形式のMicrosoft Excelドキュメントをプログラムで操作する方法を、2つの最も人気のあるライブラリ、IronXLとCsvHelperを使用して議論および比較します。

まずは、両方のライブラリが提供するものを見てみましょう。

IronXLライブラリ

IronXLは、C#を使用してMicrosoft Excelドキュメントの読み取りと編集を可能にする.NETライブラリです。 IronXL.Excelは、幅広いスプレッドシートフォーマットを読み取るためのスタンドアロンの.NETソフトウェアライブラリです。 Microsoft Excelをインストールする必要はなく、Interopにも依存しません。CSVファイルとは非常にスムーズに動作します。

IronXLは、.NETでExcelスプレッドシートファイルを読み取り、編集し、作成することを可能にする直感的なC# APIで、非常に高速なパフォーマンスを提供します。 IronXLは、.NET Core、.NET Framework、Xamarin、モバイル、Linux、macOS、およびAzureを完全にサポートしています。

IronXLは、C#用の.NET Coreおよび.NET Framework向けの主要なExcelスプレッドシートライブラリです。

IronXL フィーチャーセット

  • 読み込み、読み取り、およびデータの編集 — XLS/XLSX/CSV/TSVから
  • 保存およびエクスポート — XLS/XLSX/CSV/TSV/JSON 形式
  • 範囲 — 使いやすいワークシート [「A1:B10」] 構文。 範囲を直感的に結合し、作成します。
  • 並べ替え — 範囲、列、行を並べ替えます。
  • スタイリング — セルの視覚スタイル、フォント、サイズ、背景パターン、境界線、配置および数値形式。

CsvHelper

CSVファイルの読み書きのための.NETライブラリ。 非常に高速で、柔軟性があり、使いやすい。 カスタムクラスオブジェクトの読み書きをサポートします。 すべてのサンプルコードは、パッケージCsvHelperのドキュメントインストールにて利用可能です。 <div クラス="hsg-featured-snippet">

C#でCsvHelperを使用する方法

<ol>  
    <li><a クラス="js-modal-open" data-modal-id="trial-license-after-download" href="https://nuget.org/packages/IronXL.Excel/">CSV ファイルを読み取るために CsvHelper C# ライブラリをインストールしてください。</a></li>
    <li>使用 <code>CsvConfiguration (CSVの構成)</code> CSVの設定を行うクラス</li>
    <li>C#の組み込みを使用してファイルを開きます <code>ストリームリーダー</code></li>
    <li>ステップ2および3で作成したインスタンスを入力します。 <code>CsvReader</code> 読取りクラス</li>
    <li>CsvHelperを継承してCSVのデータを変換する <code>DefaultTypeConverter</code> クラス</li>
</ol>  

CsvHelperの機能

  • 高速: 非常に高速なパフォーマンスを実現するためにクラスを即時コンパイルします
  • 柔軟性:書くときに保守的、読むときに自由
  • 使いやすさ:読み取りと書き込みは GetRecords と同じくらい簡単です。() and WriteRecords (レコード書き込み)(記録)
  • 高度に構成可能
  • Linuxモード
  • 低メモリ使用量

コンソールアプリケーションを作成する

次の手順を使用してコンソールアプリケーションを作成します:

  • Visual Studio 2022 IDEを起動します。
  • Create new project」をクリックしてください。
  • 新しいプロジェクトの作成」ページで、言語ドロップダウンリストから C#プラットフォームリストから Windows、そして「プロジェクトタイプ」リストから コンソール を選択してください。
  • コンソールアプリを選択 (.NETフレームワーク)** 表示されているプロジェクトテンプレートから。

    プロジェクトの作成 - コンソールアプリケーション

  • 次へをクリックします。
  • 追加情報画面で、使用したいフレームワークのバージョンを指定してください。 この例では、.NET Framework 4.8 を使用します。

    プロジェクトの作成 - .NETフレームワーク

  • 「作成」をクリックして、プロセスを完了します。

    プロジェクトが作成され、ライブラリのテストの準備がほぼ整いました。 しかし、私たちはまだそれらをインストールし、プロジェクトに統合する必要があります。 まず、IronXLをインストールしましょう。

2. IronXL C#ライブラリのインストール

次の方法を使用して、IronXLライブラリをダウンロードおよびインストールできます:

  1. Visual StudioでNuGetパッケージを使用する

  2. NuGetパッケージを直接ダウンロード

  3. DLLを使用して手動インストール

    それぞれを詳しく見ていきましょう。

2.1. Visual StudioでNuGetパッケージを使用する

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#ライブラリをダウンロードしてインストールするもう一つの方法として、開発者コマンドプロンプトを使用して以下の手順でIronXL NuGetパッケージをインストールする方法があります。

  • Developer Command Prompt を開きます。通常、Visual Studio フォルダーにあります。
  • 以下のコマンドを入力してください: PM > Install-Package IronXL.Excel
  • Enterキーを押してください
  • これはパッケージをダウンロードしてインストールします。
  • Visual Studio プロジェクトを再読み込みして、使用を開始してください。

2.4. 必要なusingディレクティブを追加

  1. ソリューションエクスプローラーで、Program.csファイルを右クリックし、コードの表示をクリックします。

  2. コードファイルの最上部に次のusingディレクティブを追加します:
using IronXL;
using IronXL;
Imports IronXL
VB   C#

すべて完了しました! IronXLはダウンロードされ、インストールされ、使用する準備が整いました。 しかし、その前に CsvHelper をインストールする必要があります。

CsvHelperのインストール

3.1. NuGet パッケージ マネージャー コンソールを使用する

CsvHelper C#ライブラリをダウンロードしてインストールするためには、開発者コマンドプロンプトを使用して以下の手順でNuGetパッケージをインストールしてください。

  • Developer Command Prompt を開きます。通常、Visual Studio フォルダーにあります。
  • 以下のコマンドを入力してください:PM> Install-Package CsvHelper -Version 27.2.1
  • Enterキーを押してください
  • これはパッケージをダウンロードしてインストールします。
  • Visual Studio プロジェクトを再読み込みして、使用を開始してください。

3.2. 直接ダウンロード

NuGetウェブサイトからダウンロードしてください。 https://www.nuget.org/packages/CsvHelper/

CSVファイルの使用方法 - IronXL

***カンマ区切り値 (CSV

(注:CSV は日本語でも同じ略語が使用されるため、そのまま保持します。))ファイルは、値を区切るためにコンマを使用した区切りテキストファイルです。 ファイルの各行はデータレコードです。 これらのファイルを計算用に操作することは困難な作業になる場合がありますが、IronXLはMicrosoft Excelを使用せずにそれを行うための非常に良く、簡単なオプションを提供します。 まず、CSVファイルを通常のExcelファイルに変換しましょう。

CSVファイルをExcel形式に変換

そのプロセスは非常にシンプルで簡単です。 通常は1行のコードで行われます。

CSVからExcel形式へ:

WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;
 
workbook.SaveAs("CsvToExcelConversion.xlsx");
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;
 
workbook.SaveAs("CsvToExcelConversion.xlsx");
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
Dim ws As WorkSheet = workbook.DefaultWorkSheet
'
workbook.SaveAs("CsvToExcelConversion.xlsx")
VB   C#

4.2. IronXLを使用して変換されたCSVファイルを読み取り操作する

IronXL WorkBookクラスはExcelシートを表します。 ExcelファイルをC#で開くには、WorkBook.Loadを使用してExcelファイルのパスを指定します。 (.xlsx). 次の一行のコードは、ファイルを読み取るために使用されます:

//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")
VB   C#

各ワークブックには複数のワークシートオブジェクトを含めることができます。 これらは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")
VB   C#

セル値を読み取るコード:

// 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
VB   C#

ブックとワークシートを読み込んだ後、以下のコードサンプルを使用して、数式を変更したり、特定のセルに適用したりすることができます。 コードは次のようになります:

// 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()
VB   C#

4.3. ExcelドキュメントをCSVファイルに保存する

IronXLを使用すると、CSVファイルの作成は簡単です。 次のコードは、SaveAsCsvメソッドを使用してExcelファイルをCSV形式で単純に保存します。

WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
//Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
//Saved as : SaveAsCSV.Sheet1.csv
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
//Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
//Saved as : SaveAsCSV.Sheet1.csv
Dim wb As WorkBook = WorkBook.Load("Normal_Excel_File.xlsx")
'Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",")
'Saved as : SaveAsCSV.Sheet1.csv
VB   C#

CSVファイルの操作 - CsvHelperを使用する

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
FirstName,LastName,Age,IsActive
Ali,Talal,30,Yes
Affan,Ahmad,31,No
Saad,Bhatti,31,Yes
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'FirstName,LastName,Age,IsActive Ali,Talal,30,Yes Affan,Ahmad,31,No Saad,Bhatti,31,Yes
VB   C#

各行をPerson型のオブジェクトにマッピングします。

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int? Age { get; set; }
    public string IsActive { get; set; }
}
public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int? Age { get; set; }
    public string IsActive { get; set; }
}
Public Class Person
	Public Property FirstName() As String
	Public Property LastName() As String
	Public Property Age() As Integer?
	Public Property IsActive() As String
End Class
VB   C#

以下は、CSVファイルを読み取るためのコードです。

var fileName = @"<path to our CSV file>";
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    Encoding = Encoding.UTF8,
    Delimiter = ","
};

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>();

        foreach (var person in data)
        {
            // Do something with values in each row
        }
    }
}
var fileName = @"<path to our CSV file>";
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    Encoding = Encoding.UTF8,
    Delimiter = ","
};

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>();

        foreach (var person in data)
        {
            // Do something with values in each row
        }
    }
}
Dim fileName = "<path to our CSV file>"
Dim configuration = New CsvConfiguration(CultureInfo.InvariantCulture) With {
	.Encoding = Encoding.UTF8,
	.Delimiter = ","
}

Using fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)
	Using textReader = New StreamReader(fs, Encoding.UTF8)
	Using csv = New CsvReader(textReader, configuration)
		Dim data = csv.GetRecords(Of Person)()

		For Each person In data
			' Do something with values in each row
		Next person
	End Using
	End Using
End Using
VB   C#

データの種類はIEnumerableです。. CsvHelperは各列を同じ名前のプロパティに自動的にマッピングします。 例えば、FirstName 列の値は Person.FirstName にマッピングされます。 次にデータを反復処理し、各行の値にアクセスすることができます。

CSVファイル内のデータを別のタイプに変換する

CSVファイルには主にテキストデータが含まれています。 たとえば、年齢列は整数値ですが、CSVファイルにはテキストのみが含まれています。 CsvHelperは文字列から標準の.NET型にデータを変換できます (ブール値、Int32、Int64、列挙型). 次のようなケースがあります:IsActiveというブール型データタイプがあり、TrueまたはFalseのみを持ち、非標準の値が含まれています。 カスタムコンバーターを作成して変換することができます。 コードのスタイリングは次のようになります:

public class CustomBooleanConverter : DefaultTypeConverter
{
    public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
    {
        return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
    }
}
public class CustomBooleanConverter : DefaultTypeConverter
{
    public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
    {
        return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
    }
}
Public Class CustomBooleanConverter
	Inherits DefaultTypeConverter

	Public Overrides Function ConvertFromString(ByVal text As String, ByVal row As IReaderRow, ByVal memberMapData As MemberMapData) As Object
		Return text.Equals("Yes", StringComparison.OrdinalIgnoreCase)
	End Function
End Class
VB   C#

標準の.NET型であるboolですが、デフォルトのコンバータはTrue/False値しか処理できませんが、私たちのCSVファイルにはYes/Noが含まれています。ここでは、DefaultTypeConverterをサブクラス化し、ConvertFromStringメソッドをオーバーライドする必要があります。

6. ライセンス

IronXLはオープンに商業的です C# エクセル ライブラリ. 開発には無料で使用でき、商業展開のために常にライセンスすることができます。ライセンスが利用可能ですシングルプロジェクトの使用、単一の開発者、代理店、グローバル企業、ならびにSaaSおよびOEM再配布向け。 すべてのライセンスには、30日間の返金保証、1年間の製品サポートおよび更新、開発/ステージング/本番環境での有効性、そして永久ライセンスが含まれています。 (一回限りの購入). Liteパッケージは $749から始まります。

CsvHelper—CSVファイルの読み書き用であり、商業利用に完全に無料です。

要約と結論

サマリー

IronXLは、Excelファイルを操作するために必要なすべてを提供する完全なライブラリです。使いやすく、様々な形式をXLSXに変換する機能を提供し、またXLSXから他の形式、例えばCSVに変換する機能も備えています。これらの相互変換により、ユーザーは様々なファイル形式を簡単に扱う柔軟性を得ることができます。

一方、CsvHelperはCSVファイルフォーマットで動作するように特化して設計されているため、CSVファイルのみを扱うことができます。 すべてのコードサンプルは、CsvHelperのドキュメントファイルにあります。 ドキュメントには、プロジェクトでCsvHelperを使用するためのガイドラインが記載されています。

結論

IronXLは複数のフォーマットを扱うユーザーをサポートしているため、CsvHelperに対して明確な優位性があります。 さらに、お好みに合わせて数式やスタイルを適用することができますが、CsvHelperはCSVファイルの読み書きのみを許可し、オプションは限られています。 また、新しいレコードを既存のCSVファイルに追加することはできません。既存のエントリが上書きされてしまいます。

< 以前
IronXLとCsvWriterの比較
次へ >
IronXLとNPOIの比較 IronXLとNPOIは、開発者がExcelファイルを操作するために使用する2つの人気のあるライブラリです。それぞれのライブラリには、異なる機能と利点があります。 IronXLは、.NETフレームワークに対応する強力なExcelライブラリであり、開発者がExcelファイルを簡単に読み込み、操作し、保存できるようにします。IronXLは、高度なフォーマット機能、強力なデータ操作、そして高パフォーマンスなエンジンを提供します。このライブラリは商用ライセンスされており、企業向けに最適です。 一方、NPOIはオープンソースのExcelライブラリであり、無料で使用できます。NPOIは、基本的な読み込みと書き込み機能を提供し、広くコミュニティでサポートされています。しかし、高度な機能や商用サポートを必要とする企業には、IronXLの方が適している場合があります。 総じて、IronXLはその高機能と商用サポートによって、企業向けのプロフェッショナルな解決策として優れています。一方で、NPOIはコスト意識の高いプロジェクトや基本的なExcel操作を必要とする開発者にとって十分な選択肢です。