IRONXLの使用

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

更新済み 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アプリケーションを使用します。

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

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

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

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

図2:プロジェクトの構成](/static-assets/excel/blog/excel-to-datagridview-csharp-tutorial/excel-to-datagridview-csharp-tutorial-2.webp)

プロジェクトの構成

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

C#でExcelをDatagridviewに変換する方法、図3: .NETフレームワーク選択

.NETフレームワークの選択

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

Install-Package IronXL.Excel

C#でExcelをDatagridviewに変換する方法、図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
VB   C#

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

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

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

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

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

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

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

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

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

IronXLの使用方法に関するより多くのチュートリアルについては、こちらをクリックしてください。 使用方法ガイド.

結論

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

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

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

< 以前
大量のデータをDataTableからExcelにエクスポートする方法 (C#)
次へ >
BlazorでCSVにエクスポートする方法