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

EPPlus ExcelからDatatableを読み込むC#(IronXLチュートリアル)

更新済み 5月 16, 2023
共有:

ExcelデータをC#のDataTableに読み込むためのExcelライブラリをお探しですか?

C#でExcelファイルをDataTableに読み込むことは、データ分析とレポート、データベースへのデータインポート、データ移行、データ検証およびクリーニング、他のシステムとの統合、自動化、バッチ処理など、さまざまな業界や分野において実用的な応用があります。

この記事では、ExcelデータおよびExcelファイルをDataTableに読み込む機能を提供する、C#による.NET Core用の2つの異なるExcelライブラリについて議論し、比較します。 ライブラリは

EPPlus

  1. IronXL

IronXL は、.NET 開発者向けの強力な Excel ライブラリです。このツールを使用すると、Microsoft Excel を使用せずに、Excel ファイルの読み取り、書き込み、編集を行うことができます。大量のデータ処理やレポーティングに最適で、C# および VB.NET 言語で簡単に統合できます。

主要な特徴:

  • Excel ファイルの読み取りと書き込み
  • テンプレートの使用と生成
  • データのフィルタリングと並べ替え
  • 数式と計算のサポート
  • グラフとチャートの生成
  • 高速なパフォーマンスとスケーラビリティ

IronXL for .NET は、開発者が Excel 関連のタスクを簡単かつ効率的に実行できるように設計されています。

EPPlus ライブラリ

EPPlus の C# で Excel ファイルを作成および操作するための強力なオープンソース ライブラリです。 それは、サーバーやクライアントマシンにMicrosoft OfficeやExcelをインストールすることなく、開発者がExcelスプレッドシートをプログラム上で生成、読み取り、変更できるシンプルで直感的なAPIを提供します。 EPPlusを使用すると、ワークシートを簡単に作成したり、データを追加したり、フォーマットを適用したり、グラフを作成したり、その他のExcelファイルに対する操作を行うことができます。 それは古い .xls フォーマットと新しい .xlsx フォーマットの両方をサポートし、効率的なパフォーマンスとメモリ管理を提供します。 レポートの動的生成、データのインポート/エクスポート、またはExcel関連のタスクの自動化が必要な場合、EPPlusはC#アプリケーションでのExcelファイルの取り扱いを簡素化するための包括的な機能と能力を提供します。

2. IronXL

IronXL は、.NET 開発者向けの強力な Excel ライブラリです。このツールを使用すると、Microsoft Excel を使用せずに、Excel ファイルの読み取り、書き込み、編集を行うことができます。大量のデータ処理やレポーティングに最適で、C# および VB.NET 言語で簡単に統合できます。

主要な特徴:

  • Excel ファイルの読み取りと書き込み
  • テンプレートの使用と生成
  • データのフィルタリングと並べ替え
  • 数式と計算のサポート
  • グラフとチャートの生成
  • 高速なパフォーマンスとスケーラビリティ

IronXL for .NET は、開発者が Excel 関連のタスクを簡単かつ効率的に実行できるように設計されています。

IronXL は、.NET アプリケーション内で Excel ファイルを簡単に読み取り、書き込み、操作する能力を開発者に提供する強力で多用途なライブラリです。 直感的かつ包括的なAPIを備えたIronXLは、スプレッドシートを操作するという複雑なプロセスを簡素化し、開発者がデータをシームレスに抽出し、計算を行い、チャートを作成し、簡単にレポートを生成できるようにします。 データのインポート/エクスポートタスクの自動化、データ分析の実行、または動的なExcelテンプレートの作成など、IronXLは、開発者の貴重な時間と労力を節約しながらExcelデータの処理において正確性と信頼性を確保する堅牢なソリューションを提供します。 シームレスな統合、充実したドキュメント、および幅広い機能を備えているため、IronXLは.NETフレームワークにおけるExcelファイル操作の課題に立ち向かうための信頼できる効率的なツールを求める開発者にとって最適な選択肢として浮上します。

EPPlusライブラリのインストール

C#プロジェクトにEPPlusライブラリをインストールするには、まずVisual Studioで新しいコンソールベースのプロジェクトを作成する必要があります。 その後、NuGetパッケージマネージャーを使用して簡単にインストールできます。

新しいプロジェクトが作成されたら、「ツール」に移動して「NuGet パッケージ マネージャー」にカーソルを合わせ、「ソリューションの NuGet パッケージの管理」を選択します。

EPPlus Excel から DataTable への読み込み C# (IronXL チュートリアル) 図1

新しいウィンドウが表示されます。 新しいウィンドウで「Browse」オプションに移動し、「EPPlus」を検索してください。 パッケージのリストが表示されるので、最新の安定版を選択してください。 次に、右側にある「Install」ボタンをクリックして、EPPlusライブラリをインストールします。

EPPlus を使用して Excel を DataTable に読み込む C# (IronXL チュートリアル) 図 2

このようにして、EPPlusがあなたのプロジェクトに追加されます。

4. IronXLのインストール

IronXLをインストールする方法はいくつかありますが、このセクションではNuGetパッケージマネージャーを使用してIronXLをインストールする方法についてのみ説明します。

セクション3と同様に、新しいプロジェクトを作成し、「ツール」に移動して、ソリューション用のNuGetパッケージマネージャーを開きます。

新しいウィンドウで、検索バーに「IronXL」というキーワードを入力してください。 リストが表示され、インストールしたいIronXLパッケージを選択できます。 次に、「Install」ボタンをクリックして、プロジェクトにIronXLをインストールします。

EPPlus エクセルを DataTable に読み込む C# (IronXL チュートリアル) 図 3

「IronXL」の使用準備が整いました。

EPPlusライブラリを使用してExcelファイルとデータをDataTableに読み込む方法

このセクションでは、C#のEPPlusパッケージExcelライブラリを使用してExcelをDataTableとして読み取るコードを検討します。

DataTableとして読み込むためのサンプルExcelファイルが必要です。 その目的のために、サンプルのExcelファイルを生成します。

EPPlusでExcelをDataTableに読み込む C# (IronXLチュートリアル) 図4

以下は、Excelファイルを DataTable として読み込むコードです。


    using OfficeOpenXml;
    using System;
    using System.Data;
    using System.IO;

    class Program
    {
        static void Main(string [] args)
        {
            var path = @"sample.xlsx";
            var data = ExcelDataToDataTable(path, "Table");
            foreach (DataRow row in data.Rows)
            {
                foreach (var wsrow in row.ItemArray)
                {
                    Console.Write(wsrow);
                }
                Console.WriteLine();
            }

        }
        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 Exists");

            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
            var xlPackage = new ExcelPackage(fi);
            // get the first worksheet in the workbook
            var worksheet = xlPackage.Workbook.Worksheets [sheetName];

            dt = worksheet.Cells [1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column].ToDataTable(c =>
            {
                c.FirstRowIsColumnNames = true;
            });

            return dt;
        }
    }

    using OfficeOpenXml;
    using System;
    using System.Data;
    using System.IO;

    class Program
    {
        static void Main(string [] args)
        {
            var path = @"sample.xlsx";
            var data = ExcelDataToDataTable(path, "Table");
            foreach (DataRow row in data.Rows)
            {
                foreach (var wsrow in row.ItemArray)
                {
                    Console.Write(wsrow);
                }
                Console.WriteLine();
            }

        }
        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 Exists");

            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
            var xlPackage = new ExcelPackage(fi);
            // get the first worksheet in the workbook
            var worksheet = xlPackage.Workbook.Worksheets [sheetName];

            dt = worksheet.Cells [1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column].ToDataTable(c =>
            {
                c.FirstRowIsColumnNames = true;
            });

            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"
			Dim data = ExcelDataToDataTable(path, "Table")
			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
		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 Exists")
			End If

			ExcelPackage.LicenseContext = LicenseContext.NonCommercial
			Dim xlPackage = New ExcelPackage(fi)
			' get the first worksheet in the workbook
			Dim worksheet = xlPackage.Workbook.Worksheets (sheetName)

			dt = worksheet.Cells (1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column).ToDataTable(Sub(c)
				c.FirstRowIsColumnNames = True
			End Sub)

			Return dt
		End Function
	End Class
VB   C#

上記のコードは、ファイルパスやシート名などの入力パラメータを受け取り、出力としてDataTableを返すメソッドを呼び出します。

5.1. 出力

EPPlus Read Excel to DataTable C#(IronXLチュートリアル)図5

IronXLを使用してExcelファイルをDataTableとして読み込む

Excelシートを変換してDataTableとして読み取ることは、IronXLを使用すれば数行のコードで非常に簡単に行えます。 さらに、以前のExcelファイルを入力として使用します。

以下のコード例は、上記のコードと同じ機能を提供しますが、IronXLを使用します。


    using IronXL;
    using System;
    using System.Data;

    WorkBook workBook = WorkBook.Load("sample.xlsx");

    WorkSheet workSheet = workBook.DefaultWorkSheet;

    DataTable Table = workSheet.ToDataTable(true);

    foreach (DataRow row in Table.Rows)
    {
        for (int row = 0; row  < dataTable.Columns.Count; row ++)
        {
            Console.Write(row [row ] + " ");
        }
        Console.WriteLine();
    }

    using IronXL;
    using System;
    using System.Data;

    WorkBook workBook = WorkBook.Load("sample.xlsx");

    WorkSheet workSheet = workBook.DefaultWorkSheet;

    DataTable Table = workSheet.ToDataTable(true);

    foreach (DataRow row in Table.Rows)
    {
        for (int row = 0; row  < dataTable.Columns.Count; row ++)
        {
            Console.Write(row [row ] + " ");
        }
        Console.WriteLine();
    }
Imports IronXL
	Imports System
	Imports System.Data

	Private workBook As WorkBook = WorkBook.Load("sample.xlsx")

	Private workSheet As WorkSheet = workBook.DefaultWorkSheet

	Private Table As DataTable = workSheet.ToDataTable(True)

	For Each row As DataRow In Table.Rows
		For row As Integer = 0 To dataTable.Columns.Count - 1
			Console.Write(row (row) & " ")
		Next row
		Console.WriteLine()
	Next row
VB   C#

上記のコード例では、Excelファイルを読み込み、workSheet.ToDataTableを使用してDataTableに変換しています。(True)メソッド

6.1 出力

EPPlusでExcelをDataTableに読み込むC# (IronXLチュートリアル) 図6

7. 結論

結論として、C#でExcelファイルを読み込み、それらをDataTableに変換する際には、EPPlusとIronXLの両方が強力な機能を提供し、プロセスを簡素化する優れたライブラリです。

EPPlus は、Excelスプレッドシートをプログラムで生成、読み取り、修正するためのシンプルなAPIを提供するオープンソースのライブラリです。 それは、.xlsと.xlsxの両方の形式をサポートし、効率的なパフォーマンスとメモリ管理を提供します。

一方、 IronXL は、開発者が.NETアプリケーションでExcelファイルを簡単に操作できる多用途ライブラリです。 直感的なAPIと、データ抽出、計算の実行、チャートの作成、レポートの生成のための包括的な機能を提供します。 IronXLは、データのインポート/エクスポート、データ解析、動的テンプレート作成など、複雑なExcelファイル操作タスクを簡素化します。

IronXLとEPPlusのコード例を比較すると、EPPlusのコードはかなり長く、複雑で、読みづらいことがわかります。 一方で、IronXLのコードは非常にシンプルで読みやすいです。 IronXLはデフォルトのワークシートを使用しますが、EPPlusではワークシートの名前を指定する必要があります。そうしないとエラーが発生します。

要約すると、Excelファイルの操作やExcelファイルをDataTableとして読み取るためには、EPPlusよりもIronXLをお勧めします。 また、IronXLはシンプルなコードでExcelファイルを扱う際に、EPPlusよりも多くの機能を提供します。 IronXLに関するチュートリアルについては、以下のリンクをご覧ください。 リンク.

< 以前
ZIPアーカイブC#(開発者チュートリアル)
次へ >
.NET向けIronXLとFastExcelの比較

準備はできましたか? バージョン: 2024.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 977,734 View Licenses >