IRONXLの使用

C#でDatagridviewをExcelにエクスポートする方法

公開済み 2024年1月27日
共有:

このチュートリアルは、データをエクスポートする方法についての包括的なガイドを提供しますDataGridView コントロール次のソフトウェアを使用してWindows FormsアプリケーションからExcelファイルに変換するIronXLC#のライブラリ 私たちは、初心者がC#プロジェクトにMicrosoft Excelの機能を統合するためのスムーズな体験を提供することに焦点を当てます。

C#でDataGridViewをExcelにエクスポートする方法

  1. Visual StudioでC# Windows Formsプロジェクトを作成します。

  2. NuGetパッケージマネージャーを使用してExcelライブラリをインストールします。

  3. WindowsフォームUIにDataGridViewとボタンを作成します。

  4. DataGridViewにデータソースを接続します。

  5. ボタンのクリックイベントハンドラーにデータエクスポートロジックを適用します。

IronXLを使い始める

IronXL.NET FrameworkアプリケーションでExcelドキュメントを操作するプロセスを簡素化する強力なライブラリです。 それは大規模なExcelファイルのエクスポート、複雑なデータソースの処理、そしてMicrosoft Excel Object Libraryを必要とせずに.NETのExcelファイル操作に幅広いサポートを提供することができます。 プロジェクトを設定しましょう。

プロジェクトの設定

新しいWindowsフォームアプリケーションを作成

Visual Studioを開き、新しいWindowsフォームアプリケーションを作成してください。 これが私たちのプロジェクトの基盤となり、DataGridViewのデータをExcelファイルにエクスポートする機能を実装します。

データグリッドビューをExcelにエクスポートする方法 (C#): 図1 - Visual Studioで新しいWindowsフォームアプリケーションを作成する

2. IronXLのインストール

IronXLはプロジェクトに簡単に追加できます。 Visual Studioで、 ‘Manage NuGet Packages’ オプションに移動し、IronXLを検索してインストールします。 このアクションは、C#でDataGridViewをExcelにエクスポートするために必要なすべての依存関係を処理します。

DataGridViewをExcelにエクスポートする方法(C#):図2 - NuGetパッケージマネージャーを通じてIronXLライブラリのインストール

ユーザーインターフェイスの準備

フォームにDataGridViewコントロールを追加します。 このコントロールには、エクスポートする予定のデータが保持されます。 さらに、エクスポートプロセスをトリガーするボタンを追加します。 「'Export to Excel' または類似のラベルを付けることができます。」

エクスポート機能の実装

このセクションでは、Windows FormsアプリケーションのDataGridViewからExcelドキュメントにデータをエクスポートする機能をプログラムする具体的な方法を、IronXLを使用して説明します。

アプリケーションの構築

まずは、DataGridViewコントロールをフォームに追加する必要があります。 このコントロールは、データがエクスポートされる前に表示される主要なコンポーネントです。 それを簡単に追加するには、Visual StudioのツールボックスからDataGridViewをフォーム上にドラッグします。 DataGridViewのデータをExcelファイルにエクスポートするためのボタンを追加することもできます。

C#でDataGridViewをExcelにエクスポートする方法:図3 - DataGridViewのデータをExcelファイルにエクスポートするボタンを追加

次のステップは、データをDataGridViewにロードすることです。 このデータは、DataTableDataSet などのさまざまなソースから取得できます。 始めたばかりの場合は、プログラムで新しいDataSetまたはDataTableを作成し、サンプルデータを入力して動作を確認することをお勧めします。 または、外部ソースからデータをインポートすることもできます。 ここで重要なのは、データソースをDataGridViewにバインドすることであり、これによってデータがグリッドにリンクされます。 データがDataGridViewにバインドされると、フォーム上のグリッドに表示されます。

private void BindDataToDataGridView()
{
    // Create a new DataTable.
    DataTable dataTable = new DataTable();
    // Define columns for the DataTable.
    dataTable.Columns.Add("Employee ID", typeof(int));
    dataTable.Columns.Add("Name", typeof(string));
    dataTable.Columns.Add("Department", typeof(string));
    dataTable.Columns.Add("Joining Date", typeof(DateTime));
    // Add sample data to the DataTable.
    for (int i = 1; i <= 25; i++)
    {
        dataTable.Rows.Add(i, "Employee " + i, "Department " + (i % 5 + 1), DateTime.Now.AddDays(-i * 15));
    }
    // Bind the DataTable to the DataGridView.
    dataGridView1.DataSource = dataTable;
}
private void BindDataToDataGridView()
{
    // Create a new DataTable.
    DataTable dataTable = new DataTable();
    // Define columns for the DataTable.
    dataTable.Columns.Add("Employee ID", typeof(int));
    dataTable.Columns.Add("Name", typeof(string));
    dataTable.Columns.Add("Department", typeof(string));
    dataTable.Columns.Add("Joining Date", typeof(DateTime));
    // Add sample data to the DataTable.
    for (int i = 1; i <= 25; i++)
    {
        dataTable.Rows.Add(i, "Employee " + i, "Department " + (i % 5 + 1), DateTime.Now.AddDays(-i * 15));
    }
    // Bind the DataTable to the DataGridView.
    dataGridView1.DataSource = dataTable;
}
Private Sub BindDataToDataGridView()
	' Create a new DataTable.
	Dim dataTable As New DataTable()
	' Define columns for the DataTable.
	dataTable.Columns.Add("Employee ID", GetType(Integer))
	dataTable.Columns.Add("Name", GetType(String))
	dataTable.Columns.Add("Department", GetType(String))
	dataTable.Columns.Add("Joining Date", GetType(DateTime))
	' Add sample data to the DataTable.
	For i As Integer = 1 To 25
		dataTable.Rows.Add(i, "Employee " & i, "Department " & (i Mod 5 + 1), DateTime.Now.AddDays(-i * 15))
	Next i
	' Bind the DataTable to the DataGridView.
	dataGridView1.DataSource = dataTable
End Sub
VB   C#

ボタンクリックイベントの処理

私たちの主なユーザーとのインタラクションポイントは、Windowsフォーム内のボタンになります。 このボタンをクリックすると、エクスポート処理が開始されます。 以下は、この操作を設定する方法です:

  • あなたのWindowsフォームには、DataGridViewデータをエクスポートするためのボタンが必要です。
  • このボタンには、C#コード内のイベントハンドラメソッドがあります。 このメソッドは、ユーザーがボタンをクリックしたときにトリガーされます。
private void btnExport_Click(object sender, EventArgs e)
{
    // Code to export data will go here
}
private void btnExport_Click(object sender, EventArgs e)
{
    // Code to export data will go here
}
Private Sub btnExport_Click(ByVal sender As Object, ByVal e As EventArgs)
	' Code to export data will go here
End Sub
VB   C#

データグリッドビューからのデータのエクスポート

データグリッドビューのデータをエクスポートするためには、最初にIronXL名前空間を参照する必要があります。

using IronXL;
using IronXL;
Imports IronXL
VB   C#

イベントハンドラー内で、最初のステップはIronXLを使用して新しいワークブックとワークシートを初期化することです。 これは、DataGridViewからデータが転送される場所です。

  • WorkBookオブジェクトは、Excelファイル全体を表します。
  • ワークブック内のWorkSheetは、Excelファイルの個別のページやタブのようなものです。

    ここでは、ワークブックを作成し、次にワークシートを追加します。 ワークシートは「ExportedData」という名前ですが、アプリケーションのコンテキストに合った任意の名前を選択できます。

WorkBook workbook = new WorkBook();
WorkSheet worksheet = workbook.CreateWorkSheet("ExportedData");
WorkBook workbook = new WorkBook();
WorkSheet worksheet = workbook.CreateWorkSheet("ExportedData");
Dim workbook As New WorkBook()
Dim worksheet As WorkSheet = workbook.CreateWorkSheet("ExportedData")
VB   C#

Excelシートの入力

次のステップでは、DataGridView の行と列を反復処理し、各セルのデータを対応する Excel ワークシートのセルにコピーします。

  • 外部ループは各行を進み、内部ループはそれぞれの行内の全ての列を進みます。
  • DataGridViewの各セルの値を、対応するExcelワークシートのセルに割り当てます。 これはインデックス i を使用して行われます。(行用)と j(列用).
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    for (int j = 0; j < dataGridView1.Columns.Count; j++)
    {
        // Convert row and column index to Excel cell address format
        string cellAddress = ConvertToCellAddress(i, j);
        worksheet [cellAddress].Value = dataGridView1.Rows [i].Cells [j].Value.ToString();
    }
}
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    for (int j = 0; j < dataGridView1.Columns.Count; j++)
    {
        // Convert row and column index to Excel cell address format
        string cellAddress = ConvertToCellAddress(i, j);
        worksheet [cellAddress].Value = dataGridView1.Rows [i].Cells [j].Value.ToString();
    }
}
For i As Integer = 0 To dataGridView1.Rows.Count - 1
	For j As Integer = 0 To dataGridView1.Columns.Count - 1
		' Convert row and column index to Excel cell address format
		Dim cellAddress As String = ConvertToCellAddress(i, j)
		worksheet (cellAddress).Value = dataGridView1.Rows (i).Cells (j).Value.ToString()
	Next j
Next i
VB   C#

行と列のインデックスをExcelのセルアドレスに変換するには、次のようなヘルパーメソッドを使用できます:

private string ConvertToCellAddress(int row, int column)
{
    // Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
    // The following code converts a column index to this format.
    string columnLabel = "";
    while (column >= 0)
    {
        columnLabel = (char)('A' + column % 26) + columnLabel;
        column = column / 26 - 1;
    }
    // Rows in Excel are labeled as 1, 2, 3, ..., n
    // Adding 1 because Excel is 1-based and our loop is 0-based.
    string rowLabel = (row + 1).ToString();
    return columnLabel + rowLabel;
}
private string ConvertToCellAddress(int row, int column)
{
    // Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
    // The following code converts a column index to this format.
    string columnLabel = "";
    while (column >= 0)
    {
        columnLabel = (char)('A' + column % 26) + columnLabel;
        column = column / 26 - 1;
    }
    // Rows in Excel are labeled as 1, 2, 3, ..., n
    // Adding 1 because Excel is 1-based and our loop is 0-based.
    string rowLabel = (row + 1).ToString();
    return columnLabel + rowLabel;
}
Private Function ConvertToCellAddress(ByVal row As Integer, ByVal column As Integer) As String
	' Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
	' The following code converts a column index to this format.
	Dim columnLabel As String = ""
	Do While column >= 0
		columnLabel = ChrW(AscW("A"c) + column Mod 26) & columnLabel
		column = column \ 26 - 1
	Loop
	' Rows in Excel are labeled as 1, 2, 3, ..., n
	' Adding 1 because Excel is 1-based and our loop is 0-based.
	Dim rowLabel As String = (row + 1).ToString()
	Return columnLabel & rowLabel
End Function
VB   C#

エクセルファイルの保存

すべてのデータが転送されたら、次のステップはこのワークブックをExcelファイルとして保存することです。このステップにより、指定されたパスにシステム上でExcelファイルが作成されます。

workbook.SaveAs("DataGridViewExport.xlsx");
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
workbook.SaveAs("DataGridViewExport.xlsx");
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
workbook.SaveAs("DataGridViewExport.xlsx")
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information)
VB   C#

エラーハンドリング

任意のデータエクスポートプロセスにおいて、例外処理はアプリケーションの安定性を確保するために不可欠です。 try-catchブロックでエクスポートロジックをラッピングすることで、エクスポート中のいかなる問題も確実にキャッチします。(ファイルアクセス許可、データ形式の問題など。)適切にキャッチされ、エラー処理が行われます。

try
{
    // Export logic
}
catch (Exception ex)
{
    MessageBox.Show("An exception occurred: " + ex.Message);
}
try
{
    // Export logic
}
catch (Exception ex)
{
    MessageBox.Show("An exception occurred: " + ex.Message);
}
Try
	' Export logic
Catch ex As Exception
	MessageBox.Show("An exception occurred: " & ex.Message)
End Try
VB   C#

出力

プログラムを実行すると、このインターフェースが表示されます:

DataGridViewのデータをExcelにエクスポートする方法(C#):図4 - 前のコードの出力フォーム

ここでは、データがDataGridViewに表示されているのがわかります。 さて、エクスポートボタンをクリックしてください。 そのデータは DataGridView から Excel ファイルにエクスポートされます。

データグリッドビューをExcelにエクスポートする方法 (C#): 図5 - エクスポート成功メッセージ

ここでは、メッセージボックスが表示され、データがExcelファイルにエクスポートされることがわかります。こちらが出力されたExcelファイルです。

C#でDataGridViewをExcelにエクスポートする方法: 図6 - 前のフォームをエクスポートした際の出力Excelファイル

結論

このガイドに従うことで、C#とIronXLを使用してDataGridViewのデータをExcelファイルにエクスポートする基本的ではありますが強力なツールを取得しました。IronXL. この機能は、データの分析、レポート作成、または単に異なる形式間でデータを転送する必要があるアプリケーションにとって非常に重要です。 データグリッドビューコントロールと IronXL ライブラリのさまざまな機能を試してみると、よりカスタマイズされた高度な実装につながる可能性があります。

IronXLは、無料体験その機能を探索するために使用できる。 ライセンスは「$liteLicense」から始まり、.NETアプリケーションでExcelファイルの操作を求めるプロフェッショナルや組織にとって、信頼性と効率性の高いソリューションへの価値ある投資となります。

あなたの旅はここで終わりではありません。 IronXLの機能や、Windows Formsアプリケーションを強化する他の方法を引き続き探索してください。 コーディングを楽しんでください!

< 以前
C#コンソールアプリケーションでExcelファイルを読み取る方法
次へ >
CSVファイルからデータを読み取り、データベースに格納する方法 (C#)