IRONXLの使用

C#でExcelをDatagridviewに変換する方法

リーガン・パン
リーガン・パン
2023年5月23日
更新済み 2024年3月31日
共有:

このブログでは、最も人気のあるライブラリの一つであるIronXLを使用して、.NET技術でMicrosoft Excelドキュメントをプログラム的に操作する方法について、CSV形式と標準Excel形式のそれぞれを比較し対照します。

IronXLライブラリの機能

C#でIronXLライブラリを使用することで、Microsoft Excelドキュメントを簡単にCSVファイルに読み取り、変換することができます。 IronXLは、Microsoft ExcelのインストールやMicrosoft Office Interop Excelに依存することなく、様々なスプレッドシート形式を読み取ることができるスタンドアロンの.NETソフトウェアライブラリです。

IronXLは、.NET Coreおよび.NET Frameworkの両方に対応する、C#向けの主要なExcelスプレッドシートライブラリの一つです。 それは、Webアプリケーション、Windowsフォームアプリケーション、コンソールアプリケーションを含むさまざまな.NET Frameworkをサポートしています。 IronXLを使用したExcelファイルの読み取りは迅速で簡単です。 XLSX、XLS、CSV、TSV、XLST、XLSM など、幅広い Excel ファイル形式をサポートしています。 データテーブルをインポート、編集、エクスポートし、データセットをエクスポートし、多くの他の操作を行うことができます。 異なる拡張子でファイルをエクスポートおよび保存することも可能です。

IronXLの直感的なC# APIを使用すると、.NET環境でExcelスプレッドシートファイルの読み取り、修正、作成を簡単に行うことができます。 .NET Core、.NET Framework、Xamarin、モバイル、Linux、macOS、およびAzureのための包括的なサポートを提供しています。

IronXLはMicrosoft Excelのように計算を実行でき、テキスト、整数、数式、日付、通貨、パーセンテージなど、いくつかの列データ形式をサポートします。

詳細については、IronXLのウェブサイトをご覧ください。

Visual Studioで新しいプロジェクトを作成

IronXLフレームワークを使用する前に、Visual Studioで.NETプロジェクトを作成する必要があります。 どのバージョンのVisual Studioも使用可能ですが、最も新しいバージョンの使用をお勧めします。 要件に応じて、さまざまなプロジェクトテンプレートやWindows Formsのようなアプリケーションを作成することができます。 このチュートリアルでは、作業を簡素化するためにWindows Formsアプリケーションを使用します。

ExcelをDatagridviewに変換する方法(C#)、図1:Visual Studioで新しいプロジェクトを作成

Visual Studioで新しいプロジェクトを作成する

プロジェクトテンプレートを選択した後、プロジェクトの名前と場所を指定してください。

C#でExcelをDatagridviewに変換する方法、図2:プロジェクトを設定する

プロジェクトを構成する

次に、以下の構造を選択してください。 このプロジェクトでは、.NET Framework 4.7を使用します。

C#でExcelをDatagridviewに変換する方法、図3: .NET Frameworkの選択

.NET Frameworkの選択

プロジェクトファイルを生成した後、デザイナー ビューでForm1.csファイルを開いてプログラムコードを挿入し、インターフェースをデザインし、プログラムを構築/実行できます。 次に、ソリューションに必要なIronXLライブラリをダウンロードする必要があります。 パッケージマネージャーで次のコードを使用してパッケージをダウンロードできます:

Install-Package IronXL.Excel

ExcelをDatagridviewに変換する方法 C#、図4: パッケージ マネージャー コンソールでIronXLパッケージをインストールする

パッケージ マネージャー コンソールでIronXLパッケージをインストールする

または、NuGetパッケージマネージャーを使用して「IronXL」パッケージを検索およびダウンロードすることもできます。 NuGet パッケージ マネージャーは、プロジェクトの依存関係を管理するための便利な方法を提供します。

ExcelをDatagridviewに変換する方法(C#)、図5: NuGetパッケージマネージャーUIでIronXLパッケージを検索してインストール

NuGet パッケージ マネージャー UI で IronXL パッケージを検索してインストール

このフォームでは、DataGridView コントロールがフォームに配置されており、必要なExcelファイルを DataGridView コントロールに読み込むために使用されます。

Excelファイルからデータを読み込む

IronXLは、少ないコード行数でExcelファイルを読み取ることができる強力なExcel向けライブラリです。 以下は、Excel データを DataGridView にインポートする方法を示すコードスニペットの一例です。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
namespace DataTableWindowsForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string ImportFilePath=string.Empty;

            openFileDialog1.Filter = "Excel (*.xlsx)
*.xlsx";
            DialogResult Result= openFileDialog1.ShowDialog(); 

            if (Result == DialogResult.OK)
            {
                ImportFilePath = openFileDialog1.FileName;
            }
            if(ImportFilePath!=string.Empty)
            {
                var exceldoc=IronXL.WorkBook.LoadExcel(ImportFilePath);
                var Edataset = exceldoc.ToDataSet().Tables [0];
                for (int i = 0; i < Edataset.Columns.Count; i++)
                {
                    Edataset.Columns [i].ColumnName = Edataset.Rows [0].ItemArray [i].ToString();
                    //dataGridView1.Rows [i].HeaderCell.Value = Edataset.Rows [0].ItemArray [i];
                }
                dataGridView1.DataSource = Edataset;
                dataGridView1.Rows.RemoveAt(0);
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
namespace DataTableWindowsForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string ImportFilePath=string.Empty;

            openFileDialog1.Filter = "Excel (*.xlsx)
*.xlsx";
            DialogResult Result= openFileDialog1.ShowDialog(); 

            if (Result == DialogResult.OK)
            {
                ImportFilePath = openFileDialog1.FileName;
            }
            if(ImportFilePath!=string.Empty)
            {
                var exceldoc=IronXL.WorkBook.LoadExcel(ImportFilePath);
                var Edataset = exceldoc.ToDataSet().Tables [0];
                for (int i = 0; i < Edataset.Columns.Count; i++)
                {
                    Edataset.Columns [i].ColumnName = Edataset.Rows [0].ItemArray [i].ToString();
                    //dataGridView1.Rows [i].HeaderCell.Value = Edataset.Rows [0].ItemArray [i];
                }
                dataGridView1.DataSource = Edataset;
                dataGridView1.Rows.RemoveAt(0);
            }
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports System.Windows.Forms
Imports System.Windows.Forms.VisualStyles.VisualStyleElement.Window
Namespace DataTableWindowsForm
	Partial Public Class Form1
		Inherits Form

		Public Sub New()
			InitializeComponent()
		End Sub

		Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
			Dim ImportFilePath As String=String.Empty

			openFileDialog1.Filter = "Excel (*.xlsx) *.xlsx"
			Dim Result As DialogResult= openFileDialog1.ShowDialog()

			If Result = System.Windows.Forms.DialogResult.OK Then
				ImportFilePath = openFileDialog1.FileName
			End If
			If ImportFilePath<>String.Empty Then
				Dim exceldoc=IronXL.WorkBook.LoadExcel(ImportFilePath)
				Dim Edataset = exceldoc.ToDataSet().Tables (0)
				For i As Integer = 0 To Edataset.Columns.Count - 1
					Edataset.Columns (i).ColumnName = Edataset.Rows (0).ItemArray (i).ToString()
					'dataGridView1.Rows [i].HeaderCell.Value = Edataset.Rows [0].ItemArray [i];
				Next i
				dataGridView1.DataSource = Edataset
				dataGridView1.Rows.RemoveAt(0)
			End If
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

上記のコードはExcelからデータをインポートします。 より多くのコンテキストを提供するために、DataGridView コントロールとボタンを備えた Windows Forms アプリケーションを設計していると仮定しましょう。 そのボタンをクリックすると、特定の場所からExcelファイルを参照するダイアログが開きます。 カスタムコードを追加して、特定の拡張子を持つファイルのみをフィルタリングして表示します。

C#でExcelをDatagridviewに変換する方法、図6: Excelファイルを選択するダイアログを開く

Excelファイルを選択するダイアログを開く

次に、LoadExcel メソッドを使用してExcelファイルからデータを読み込みます。このメソッドは、ファイル名、バイト、ストリームなどさまざまなソースからデータを読み込むことができます。 エクセルファイルがパスワード保護されている場合、パラメーターとしてパスワードを渡すこともできます。

Excelの詳細がIronXLオブジェクトに読み込まれると、ToDataSetメソッドを使用して、Excelシートのデータをデータセットに変換します。 Excelファイルの各シートは、データセット内の個別のテーブルに変換されます。

次に、必要なテーブルをデータセットからDataGridViewにロードします。 これを行うには、DataGridViewDataSourceプロパティをIronXLから新しく作成されたDataTableオブジェクトに設定します。 このステップでは、ExcelファイルからDataGridViewへのデータポピュレーションが可能になります。

ExcelをDatagridviewに変換する方法(C#)、図7: Excelファイルからデータを表示する

Excelファイルからデータを表示する

さらに、Excel ヘッダー名も DataGridView ヘッダーに割り当てられます。 さらに、Excel列を行データとして含むDataTableから追加情報列を削除しました。 これにより、DataGridViewに関連するデータのみが表示されることが保証されます。

IronXLの使用に関するチュートリアルについては、このハウツーガイドをクリックしてください。

結論

IronXLは、外部ライブラリに依存しない非常に人気のあるExcelユーティリティです。 それは独立したソリューションであり、Microsoft Excelのインストールを必要としません。 さまざまなプラットフォームに対応しています。

IronXLを使用すると、Microsoft Excelドキュメントに関連するさまざまな操作をプログラムで実行できます。 文字列や数値のソート、データのトリミングおよび追加、値の検索と置換、セルの結合と結合解除、ファイルの保存などのタスクを実行できます。 また、スプレッドシートのデータを検証し、セルのデータ型を定義することもできます。 さらに、IronXLはCSVファイルの読み取りと書き込みをサポートしています。

IronXLは$749で購入可能です。 お客様はまた、更新および製品サポートのために年会費を支払うオプションがあります。 追加料金を支払えば、IronXLは無制限の再配布権を提供します。 より詳細な料金情報を取得するには、ライセンスページをご覧ください。

リーガン・パン
ソフトウェアエンジニア
レーガンはリーディング大学で電子工学の学士号を取得しました。Iron Softwareに入社する前の仕事では、一つのタスクに集中して取り組んでいました。Iron Softwareでは、営業、技術サポート、製品開発、マーケティングのいずれにおいても広範な業務に携わることが最も楽しいと感じています。彼は、Iron Softwareライブラリを開発者がどのように使用しているかを理解し、その知識を使ってドキュメントを継続的に改善し、製品を開発することを楽しんでいます。
< 以前
大量のデータをDataTableからExcelにエクスポートする方法 (C#)
次へ >
BlazorでCSVにエクスポートする方法