C#でDataGridViewをExcelにエクスポートする方法
このチュートリアルは、DataGridViewコントロールからExcelファイルにデータをエクスポートする方法を、C#のIronXLライブラリを使用して提供する包括的なガイドです。 私たちの焦点は、C#プロジェクトにMicrosoft Excel機能を統合したい初心者にシームレスな体験を提供することにあります。
DataGridViewからExcelへのC#でのエクスポート方法
- Visual StudioでC# Windows Formsプロジェクトを作成します。
- NuGetパッケージマネージャを使用してExcelライブラリをインストールします。
- Windows FormのUIにDataGridViewとボタンを作成します。
- DataGridViewにデータソースをアタッチします。
- ボタンのクリックイベントハンドラにデータエクスポートロジックを適用します。
IronXLの始め方
IronXLは、.NET FrameworkアプリケーションでExcel文書を扱うプロセスを簡素化する強力なライブラリです。 これにより、大きなExcelファイルをエクスポートし、複雑なデータソースを処理し、Microsoft Excel Object Libraryを使用せずに.NET Excelファイル操作を広範にサポートすることができます。 プロジェクトをセットアップしましょう。
プロジェクトのセットアップ
1. 新しいWindows Formsアプリケーションの作成
Visual Studioを開き、新しいWindows Formsアプリケーションを作成します。 これは、DataGridViewデータをExcelファイルにエクスポートする機能を実装するためのプロジェクトの基盤となります。

2. IronXLのインストール
IronXLはプロジェクトに簡単に追加できます。 Visual Studioで、"NuGetパッケージの管理"オプションに移動し、IronXLを検索してインストールします。 この操作により、C#でDataGridViewをExcelにエクスポートするために必要な依存関係が全て処理されます。

3. ユーザーインターフェイスの準備
フォームにDataGridViewコントロールを追加します。 このコントロールは、エクスポートしようとするデータを保持します。 さらに、エクスポートプロセスをトリガーするボタンを追加します。 "Excelへのエクスポート"などのラベルを付けることができます。
エクスポート機能の実装
このセクションでは、IronXLを使用してWindows FormsアプリケーションのDataGridViewからExcelドキュメントにデータをエクスポートする機能をプログラムする方法について詳しく説明します。
アプリケーションの構築
まず、フォームにDataGridViewコントロールを追加する必要があります。 このコントロールは、エクスポートする前にデータが表示される主なコンポーネントです。 Visual StudioのツールボックスからフォームにDataGridViewをドラッグすることで簡単に追加できます。 また、ExcelファイルにDataGridViewデータをエクスポートするためのボタンを追加できます。

次のステップは、データをDataGridViewにロードすることです。 このデータは、DataTableやDataSetなど、さまざまなソースから取得できます。 始めたばかりの方は、プログラムで新しい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ボタンクリックイベントの処理
ユーザーとの主なやり取りポイントは、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 SubDataGridViewからのデータエクスポート
DataGridViewのデータをエクスポートするには、まずIronXL名前空間を参照する必要があります:
using IronXL;using IronXL;Imports IronXLイベントハンドラ内では、最初のステップとして新しいワークブックとワークシートをIronXLを使って初期化します。 ここにDataGridViewからのデータが転送されます。
WorkBookオブジェクトは、Excelファイル全体を表します。- ワークブック内の
WorkSheetは、Excelファイルの個々のページまたはタブのようなものです。
ここでは、ワークブックを作成し、それにワークシートを追加します。 ワークシートには"ExportedData"という名前が付けられていますが、アプリケーションのコンテキストに応じた任意の名前を選ぶことができます。
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("ExportedData");WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("ExportedData");Dim workbook As WorkBook = WorkBook.Create()
Dim worksheet As WorkSheet = workbook.CreateWorkSheet("ExportedData")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行と列のインデックスを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 FunctionExcelファイルの保存
すべてのデータが転送された後、次のステップはこのワークブックを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)エラーハンドリング
データエクスポートプロセスにおいて、例外を処理することは、アプリケーションの安定性を確保するために重要です。 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出力
プログラムを実行すると次のインターフェースが表示されます:

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

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

結論
このガイドに従うことにより、C#とIronXLを使用してDataGridViewデータをExcelファイルにエクスポートする基本的かつ強力なツールを手に入れることができました。 この機能は、データ分析、レポート、またはさまざまな形式間でデータを移行する必要があるアプリケーションにとって重要です。 DataGridViewコントロールとIronXLライブラリのさまざまな機能を試すことで、よりカスタマイズされた高度な実装が可能になることを覚えておいてください。
IronXLは、その機能を探索するために無料トライアルを提供しています。 ライセンスは$liteLicenseから始まり、.NETアプリケーションでExcelファイルの操作のための信頼性と効率的なソリューションを求めるプロフェッショナルや組織にとって価値ある投資です。
あなたの旅はここで終わりません。 IronXLの機能と、Windows Formsアプリケーションを強化する他の方法をさらに探求し続けてください。 コーディングを楽しんでください!
よくある質問
C#でDataGridViewからExcelファイルにデータをエクスポートするにはどうすればよいですか?
IronXLライブラリを使用して、C#でDataGridViewからExcelファイルにデータをエクスポートできます。これには、Windows Formsプロジェクトの作成、NuGetを介したIronXLのインストール、およびDataGridViewからExcelワークシートへのデータ転送ロジックの実装が含まれます。
ExcelにエクスポートするためのDataGridViewの設定に必要な手順は何ですか?
手順には、Windows FormsプロジェクトでDataGridViewを作成し、データソースにバインドし、フォームにボタンを追加し、IronXLライブラリを使用してボタンのクリックイベントハンドラにエクスポートロジックを書き込むことが含まれます。
Visual Studio プロジェクトに IronXL をインストールする方法を教えてください。
Visual StudioプロジェクトにIronXLをインストールするには、「NuGetパッケージを管理」に移動し、IronXLを検索し、C#でDataGridViewをExcelにエクスポートするために必要なすべての依存関係を処理するためにそれをインストールします。
IronXLを使用して大きなExcelファイルをエクスポートできますか?
はい、IronXLはMicrosoft Excelオブジェクトライブラリを必要とせずに大規模なデータセットを処理する堅牢な機能を提供して、大きなExcelファイルのエクスポートを可能にします。
DataGridViewエクスポートチュートリアルでのボタンの役割は何ですか?
チュートリアルのボタンはエクスポートプロセスをトリガーします。クリックすると、IronXLライブラリを使用してDataGridViewからExcelファイルにデータを転送するロジックを実行します。
IronXLはDataGridViewからExcelへのデータ転送をどのように処理しますか?
IronXLはDataGridViewの行と列を反復処理し、それぞれのセルのデータを対応するExcelワークシートセルにコピーすることでデータ転送を促進します。
IronXLを使用したエクスポートプロセス中のエラーをどのように管理できますか?
try-catchブロックにエクスポートロジックをラップして例外をキャッチして処理することでエラーを管理し、ファイルアクセス許可の問題などが発生した場合でも円滑な操作を保証できます。
DataGridViewからデータをエクスポートした後にExcelファイルをどのように保存しますか?
データがIronXLを使用してExcelワークシートに転送されたら、IronXLのSaveAsメソッドを使用してファイルをシステムに保存できます。
IronXLの機能をテストするための無料トライアルは利用可能ですか?
IronXLは無料トライアルを提供しており、.NETアプリケーションでExcelファイルを操作するための機能を試すことができます。さらに開発を進めるためのライセンスも用意されています。






