
EPPlusでExcelをDataTableに読み込むC#(IronXLチュートリアル)
C#でExcelデータをDataTableに読み込むためのExcelライブラリをお探しですか?
C#でExcelファイルをDataTableに読み込むことは、データ分析とレポート作成、データベースへのデータのインポート、データ移行、データ検証とクリーンアップ、他のシステムとの統合、オートメーション、バッチ処理など、さまざまな業界や領域で多くの実用的な用途があります。
この記事では、C# for .NET Core用のExcelデータとExcelファイルをDataTableに読み込むための2つの異なるExcelライブラリを比較検討します。 ライブラリは
- EPPlus
- IronXL
1. EPPlusライブラリ
EPPlusは、C#でExcelファイルを作成および操作するための強力なオープンソースライブラリです。 このライブラリは、サーバーやクライアントマシンにMicrosoft OfficeやExcelのインストールを必要とせずに、Excelスプレッドシートをプログラム的に生成、読み込み、変更するためのシンプルで直感的なAPIを提供します。 EPPlusを使用すると、ワークシートの作成、データの追加、フォーマットの適用、チャートの作成、その他のExcelファイルに対する操作が簡単に行えます。 古い.xls形式と新しい.xlsx形式の両方に対応しており、効率的なパフォーマンスとメモリ管理を提供します。 動的なレポートの生成、データのインポート/エクスポート、Excel関連タスクの自動化が必要な場合、EPPlusはC#アプリケーションでのExcelファイルの取り扱いを簡素化する包括的な機能と能力を提供します。
2. IronXL
IronXLは、.NETアプリケーション内でExcelファイルを簡単に読み書きし操作する能力を開発者に提供する強力で多用途なライブラリです。 直感的で包括的なAPIにより、IronXLはスプレッドシートの操作が従来は複雑だったプロセスを簡素化し、データの抽出、計算の実行、チャートの作成、レポートの生成をスムーズに行えるようにします。 データのインポート/エクスポート自動化、データ分析、動的なExcelテンプレートの作成において、IronXLは開発者の貴重な時間と労力を節約しながら、Excelデータの取り扱いの正確性と信頼性を確保する堅牢なソリューションを提供します。 シームレスな統合、広範なドキュメント、および多様な機能範囲を持つIronXLは、Excelファイルの操作に関連する課題を克服したい開発者のための信頼性と効率性を持ったツールとして最適な選択肢となります。
3. EPPlusライブラリのインストール
C#プロジェクトにEPPlusライブラリをインストールするには、まずVisual Studioで新しいコンソールベースのプロジェクトを作成する必要があります。 その後、NuGetパッケージマネージャーを使用して簡単にインストールできます。
新しいプロジェクトを作成したら、ツールに移動し、NuGetパッケージマネージャーにホバーした後、"ソリューション用のNuGetパッケージの管理"を選択します。
新しいウィンドウが表示されます。 この新しいウィンドウで、"参照"オプションに行き、"EPPlus"を検索します。 パッケージのリストが表示され、最新の安定版を選択する必要があります。 その後、右側の"インストール"ボタンをクリックしてEPPlusライブラリをインストールします。
これで、EPPlusがプロジェクトに追加されます。
4. IronXLのインストール
IronXLをインストールする方法はいくつかありますが、このセクションではNuGetパッケージマネージャーを使用したIronXLのインストールのみを説明します。
セクション3と同様に、新しいプロジェクトを作成し、"ツール"に移動して、ソリューション用のNuGetパッケージマネージャーを開きます。
新しいウィンドウで、検索バーに"IronXL"というキーワードを入力します。 リストが表示され、インストールしたいIronXLパッケージを選択できます。 その後、"インストール"ボタンをクリックしてプロジェクトにIronXLをインストールします。
これでIronXLは使用可能です。
5. EPPlusライブラリを使用してExcelファイルとデータをDataTableに読み込む
このセクションでは、C#のEPPlusパッケージExcelライブラリを使用してDataTableとしてExcelを読み込むコードを調べます。
DataTableとして読み込むサンプルExcelファイルが必要です。 その目的のために、サンプルのExcelファイルを生成します。
以下はExcelファイルをDataTableとして読み込むコードです。
using OfficeOpenXml;
using System;
using System.Data;
using System.IO;
class Program
{
static void Main(string[] args)
{
var path = @"sample.xlsx"; // Specify the path to your Excel file
var data = ExcelDataToDataTable(path, "Table");
// Iterate through each row in the DataTable and print its contents
foreach (DataRow row in data.Rows)
{
foreach (var wsrow in row.ItemArray)
{
Console.Write(wsrow + " ");
}
Console.WriteLine();
}
}
/// <summary>
/// Converts Excel sheet data to a DataTable.
/// </summary>
/// <param name="filePath">The path to the Excel file.</param>
/// <param name="sheetName">The name of the worksheet to read from.</param>
/// <param name="hasHeader">Indicates whether the Excel sheet has a header row.</param>
/// <returns>DataTable containing Excel data.</returns>
public static DataTable ExcelDataToDataTable(string filePath, string sheetName, bool hasHeader = true)
{
DataTable dt = new DataTable();
var fi = new FileInfo(filePath);
// Check if the file exists
if (!fi.Exists)
throw new Exception("File " + filePath + " does not exist.");
// Set the license context for EPPlus
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
// Load the Excel file into an EPPlus ExcelPackage
using (var xlPackage = new ExcelPackage(fi))
{
// Get the specified worksheet from the workbook
var worksheet = xlPackage.Workbook.Worksheets[sheetName];
// Convert the worksheet to a DataTable, optionally using the first row as column names
dt = worksheet.Cells[1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column].ToDataTable(c =>
{
c.FirstRowIsColumnNames = hasHeader;
});
}
return dt;
}
}Imports OfficeOpenXml
Imports System
Imports System.Data
Imports System.IO
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim path = "sample.xlsx" ' Specify the path to your Excel file
Dim data = ExcelDataToDataTable(path, "Table")
' Iterate through each row in the DataTable and print its contents
For Each row As DataRow In data.Rows
For Each wsrow In row.ItemArray
Console.Write(wsrow & " ")
Next wsrow
Console.WriteLine()
Next row
End Sub
''' <summary>
''' Converts Excel sheet data to a DataTable.
''' </summary>
''' <param name="filePath">The path to the Excel file.</param>
''' <param name="sheetName">The name of the worksheet to read from.</param>
''' <param name="hasHeader">Indicates whether the Excel sheet has a header row.</param>
''' <returns>DataTable containing Excel data.</returns>
Public Shared Function ExcelDataToDataTable(ByVal filePath As String, ByVal sheetName As String, Optional ByVal hasHeader As Boolean = True) As DataTable
Dim dt As New DataTable()
Dim fi = New FileInfo(filePath)
' Check if the file exists
If Not fi.Exists Then
Throw New Exception("File " & filePath & " does not exist.")
End If
' Set the license context for EPPlus
ExcelPackage.LicenseContext = LicenseContext.NonCommercial
' Load the Excel file into an EPPlus ExcelPackage
Using xlPackage = New ExcelPackage(fi)
' Get the specified worksheet from the workbook
Dim worksheet = xlPackage.Workbook.Worksheets(sheetName)
' Convert the worksheet to a DataTable, optionally using the first row as column names
dt = worksheet.Cells(1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column).ToDataTable(Sub(c)
c.FirstRowIsColumnNames = hasHeader
End Sub)
End Using
Return dt
End Function
End Class上記のコードは、ファイルパスとシート名などの入力パラメータを取り、DataTableを出力として返すメソッドを定義しています。 また、DataTableの各行を繰り返してデータを表示します。
5.1. 出力
出力はExcelファイルの内容がコンソールに印刷されることになります。
6. IronXLを使用してExcelファイルをDataTableとして読み込む
IronXLを使用すると、Excelシートを変換してDataTableとして読み込むのが簡単で、わずか数行のコードで行えます。 さらに、以前のExcelファイルを入力として使用します。
次のコード例は、上記のコードと同じ機能を実行しますが、IronXLを使用します。
using IronXL;
using System;
using System.Data;
class Program
{
static void Main(string[] args)
{
// Load the Excel file into an IronXL WorkBook
WorkBook workBook = WorkBook.Load("sample.xlsx");
// Get the default worksheet from the workbook
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Convert the worksheet to a DataTable, specifying that the first row contains column names
DataTable table = workSheet.ToDataTable(true);
// Iterate through each row in the DataTable and print its contents
foreach (DataRow row in table.Rows)
{
foreach (var cell in row.ItemArray)
{
Console.Write(cell + " ");
}
Console.WriteLine();
}
}
}Imports IronXL
Imports System
Imports System.Data
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Load the Excel file into an IronXL WorkBook
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
' Get the default worksheet from the workbook
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
' Convert the worksheet to a DataTable, specifying that the first row contains column names
Dim table As DataTable = workSheet.ToDataTable(True)
' Iterate through each row in the DataTable and print its contents
For Each row As DataRow In table.Rows
For Each cell In row.ItemArray
Console.Write(cell & " ")
Next cell
Console.WriteLine()
Next row
End Sub
End Class上記のコード例では、単にExcelファイルを読み込み、DataTableに変換しています。
6.1 出力
出力はExcelファイルの内容がコンソールに印刷されることになります。
7. 結論
結論として、C#でExcelファイルを読み、それをDataTableに変換することに関して、EPPlusとIronXLのどちらも優れたライブラリであり、強力な機能を提供し、プロセスを簡素化します。
EPPlusは、プログラム的にExcelスプレッドシートを生成、読み込み、修正する簡潔なAPIを提供するオープンソースのライブラリです。 .xls形式と.xlsx形式の両方をサポートし、効率的なパフォーマンスとメモリ管理を提供します。
一方、IronXLは、.NETアプリケーションでExcelファイルを簡単に扱えるようにする多用途なライブラリです。 直感的なAPIと包括的な機能を提供し、データの抽出、計算の実行、チャートの作成、レポートの生成を可能にします。 IronXLは、データのインポート/エクスポート、データ分析、動的テンプレートの作成など、複雑なExcelファイルの操作タスクを簡素化します。
IronXLとEPPlusのコード例を比較すると、EPPlusのコードはかなり長く、複雑で読みづらいことがわかります。 一方、IronXLのコードは非常にシンプルで読みやすいです。 IronXLはデフォルトのワークシートを使用しますが、EPPlusではワークシートの名前を指定する必要があります。 そうでなければ、エラーが発生します。
まとめとして、Excelファイルの操作とDataTableとしての読み込みについては、EPPlusよりもIronXLをお勧めします。 また、IronXLはEPPlusよりもシンプルなコードでExcelファイルを扱う際の機能を多く提供しています。 IronXLのチュートリアルの詳細については、次のリンクをご覧ください。

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。
関連する記事



