ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
CSVファイルの取り扱いは困難な作業となることがあります。 Microsoft Excelをインストールする必要がなく、開発者がこのタスクを支援するために使用できるライブラリは今日、多く存在します。
この記事では、C# .NET技術を使用して、CSV形式または標準のXLSX形式のMicrosoft Excelドキュメントをプログラムで操作する方法を、2つの最も人気のあるライブラリ、IronXLとCsvHelperを使用して議論および比較します。
まずは、両方のライブラリが提供するものを見てみましょう。
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スプレッドシートライブラリです。
CSVファイルの読み書きのための.NETライブラリ。 非常に高速で、柔軟性があり、使いやすい。 カスタムクラスオブジェクトの読み書きをサポートします。 すべてのサンプルコードは、パッケージCsvHelperのドキュメントインストールにて利用可能です。 <div クラス="hsg-featured-snippet">
<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>
次の手順を使用してコンソールアプリケーションを作成します:
プロジェクトの作成 - コンソールアプリケーション
追加情報画面で、使用したいフレームワークのバージョンを指定してください。 この例では、.NET Framework 4.8 を使用します。
プロジェクトの作成 - .NETフレームワーク
「作成」をクリックして、プロセスを完了します。
プロジェクトが作成され、ライブラリのテストの準備がほぼ整いました。 しかし、私たちはまだそれらをインストールし、プロジェクトに統合する必要があります。 まず、IronXLをインストールしましょう。
次の方法を使用して、IronXLライブラリをダウンロードおよびインストールできます:
Visual StudioでNuGetパッケージを使用する
NuGetパッケージを直接ダウンロード
DLLを使用して手動インストール
それぞれを詳しく見ていきましょう。
Visual Studio は、プロジェクトに NuGet パッケージをインストールするための NuGet パッケージ マネージャーを提供します。 それはプロジェクトメニューからアクセスするか、ソリューションエクスプローラーでプロジェクトを右クリックしてアクセスできます。
選択 - 管理 - NuGet パッケージ
ブラウズタブから -> IronXL.Excelを検索 -> インストール
IronXL を検索
これは、NuGetサイトに直接アクセスし、パッケージをダウンロードすることでできます。 以下の手順は:
2.3. DLLを使用して手動でインストール
IronXL C#ライブラリをダウンロードしてインストールするもう一つの方法として、開発者コマンドプロンプトを使用して以下の手順でIronXL NuGetパッケージをインストールする方法があります。
PM > Install-Package IronXL.Excel
ソリューションエクスプローラーで、Program.csファイルを右クリックし、コードの表示をクリックします。
using IronXL;
using IronXL;
Imports IronXL
すべて完了しました! IronXLはダウンロードされ、インストールされ、使用する準備が整いました。 しかし、その前に CsvHelper をインストールする必要があります。
CsvHelper C#ライブラリをダウンロードしてインストールするためには、開発者コマンドプロンプトを使用して以下の手順でNuGetパッケージをインストールしてください。
PM> Install-Package CsvHelper -Version 27.2.1
NuGetウェブサイトからダウンロードしてください。 https://www.nuget.org/packages/CsvHelper/
***カンマ区切り値 (CSV
(注:CSV は日本語でも同じ略語が使用されるため、そのまま保持します。))ファイルは、値を区切るためにコンマを使用した区切りテキストファイルです。 ファイルの各行はデータレコードです。 これらのファイルを計算用に操作することは困難な作業になる場合がありますが、IronXLはMicrosoft 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")
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")
各ワークブックには複数のワークシートオブジェクトを含めることができます。 これらは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()
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
CSVファイルの読み込みは、実際のところ想像よりもはるかに難しいタスクの一つです。 CsvHelperライブラリは、型安全で高速かつ柔軟なコードを書くことを容易にします。
こちらはサンプルの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
各行を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
以下は、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
データの種類はIEnumerableです。
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
標準の.NET型であるboolですが、デフォルトのコンバータはTrue/False値しか処理できませんが、私たちのCSVファイルにはYes/Noが含まれています。ここでは、DefaultTypeConverterをサブクラス化し、ConvertFromStringメソッドをオーバーライドする必要があります。
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ファイルに追加することはできません。既存のエントリが上書きされてしまいます。
9つの .NET API製品 オフィス文書用