チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.XLS for .NET»データのインポート/エクスポート»C# で DataGrid を Excel にエクスポートする方法(Interop 不要)
2026-02-06

C# で DataGrid を Excel にエクスポートする方法(Interop 不要)

C# による DataGrid / GridView の Excel エクスポート

C# アプリケーションにおいて、UI コントロールに表示されている表形式データを Excel にエクスポートすることは、非常に一般的な要件です。WinForms や ASP.NET プロジェクトでは、DataGridDataGridViewGridView に現在表示されているデータを、レポート作成や共有、後続処理のために Excel ファイルとして出力したいケースが多くあります。

実際の業務では、エクスポートされた Excel ファイルは単なる生データとして使われることはほとんどありません。読みやすいレイアウト、表ヘッダーの書式、適切な列幅、数値や日付の表示形式などが求められるのが一般的です。

本記事では、Spire.XLS for .NET を使用し、Microsoft Office Interop を使用せずに、C# で DataGridView および GridView / DataGrid のデータを Excel にエクスポートする方法を解説します。表示中のデータを正確に出力しつつ、実装をシンプルに保ち、Excel 側で一貫した書式設定を行うことに重点を置いています。

目次


C# でプログラムから Excel をエクスポートするメリット

Microsoft Office Interop を使用して Excel ファイルを生成することも可能ですが、DataGrid、DataGridView、GridView からデータを出力する場合、プログラムによるエクスポートには以下のような明確な利点があります。

  • 実行環境に Microsoft Excel をインストールする必要がない
  • サーバー環境やクラウド環境に適している
  • 大量データを扱っても高いパフォーマンスを維持できる
  • 自動処理やバックグラウンドでのエクスポートに向いている

コードベースで直接 Excel を生成することで、安定性・保守性・拡張性に優れたエクスポート機能を、さまざまなアプリケーションで一貫して提供できます。


基本コンセプト:表示データを DataTable 経由でエクスポートする

DataGrid、DataGridView、GridView はいずれも UI コントロールですが、本質的には行と列で構成された構造化データを表示するためのものです。これらのコントロールを直接エクスポートしようとすると、UI に依存したロジックになりやすく、保守性が低下します。

そこで推奨されるのが、次のようなワークフローです。

画面表示データ → DataTable → Excel ファイル

この設計では、

  • DataTable がユーザーに表示されている内容を正確に表現する
  • Excel 出力処理を UI レイヤーから分離できる
  • WinForms と ASP.NET の両方で同じ実装を利用できる
  • 書式やレイアウトは Excel 側で一元管理できる

DataTable は最終的な出力先ではなく、中間データ構造として機能します。Spire.XLS for .NET を使用すれば、DataTable を書式付きの Excel ファイルとして簡単にエクスポートできます。


手順 1:表示中のデータを DataTable に変換する

最初のステップでは、UI コントロールに 現在表示されているデータ を取得し、DataTable に変換します。ここでは元のデータソースを再構築するのではなく、表示内容そのものを取得することが重要です。

DataGridView(WinForms)から表示データを取得する

WinForms アプリケーションでは、ユーザーは画面に表示されている DataGridView の内容と同じデータがエクスポートされることを期待します。以下のメソッドは、表示中の DataGridView データを DataTable に変換します。

DataTable ConvertDataGridViewToDataTable(DataGridView dgv)
{
    DataTable dt = new DataTable();

    foreach (DataGridViewColumn column in dgv.Columns)
    {
        dt.Columns.Add(column.HeaderText, column.ValueType ?? typeof(string));
    }

    foreach (DataGridViewRow row in dgv.Rows)
    {
        if (row.IsNewRow) continue;

        DataRow dr = dt.NewRow();
        for (int i = 0; i < dgv.Columns.Count; i++)
        {
            dr[i] = row.Cells[i].Value ?? DBNull.Value;
        }
        dt.Rows.Add(dr);
    }

    return dt;
}

この方法により、列ヘッダー、列順、表示されている値を保持したまま、DataGridView のデータを Excel にエクスポートできます。

GridView(ASP.NET)から表示データを取得する

ASP.NET アプリケーションでは、GridView コントロールが表形式データの表示に使用されます。表示中の GridView データをエクスポートする場合、以下のようにレンダリングされた行を DataTable に変換できます。

DataTable ConvertGridViewToDataTable(GridView gv)
{
    DataTable dt = new DataTable();

    foreach (TableCell cell in gv.HeaderRow.Cells)
    {
        dt.Columns.Add(cell.Text);
    }

    foreach (GridViewRow row in gv.Rows)
    {
        DataRow dr = dt.NewRow();
        for (int i = 0; i < row.Cells.Count; i++)
        {
            dr[i] = row.Cells[i].Text;
        }
        dt.Rows.Add(dr);
    }

    return dt;
}

この方法を使えば、UI に依存した処理を増やすことなく、C# で GridView のデータを Excel にエクスポートするための共通データ構造を用意できます。

なお、データベースから直接 Excel に出力したい場合は、こちらの記事も参考にしてください: C# でデータベースを Excel にエクスポートする方法


手順 2:C# で DataTable を Excel にエクスポートする

表示データを DataTable に変換できたら、あとは UI に依存しない形で Excel ファイルを生成するだけです。

ここでは Spire.XLS for .NET を使用し、Microsoft Excel をインストールせずに Excel ファイルを作成します。

Spire.XLS for .NET のインストール

NuGet を使用してインストールできます。

Install-Package Spire.XLS

または、Spire.XLS for .NET をダウンロードして、手動でプロジェクトに追加することも可能です。

基本的な Excel エクスポート例

using Spire.Xls;

Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];

// 列ヘッダーを含めて DataTable を Excel に挿入
worksheet.InsertDataTable(exportTable, true, 1, 1);

// Excel ファイルを保存
workbook.SaveToFile("ExportedData.xlsx", ExcelVersion.Version2016);

エクスポート結果の Excel ファイルは以下のようになります。

C# による DataGridView の基本的な Excel 出力

このエクスポート処理は、DataGrid、DataGridView、GridView のいずれにもそのまま再利用できます。


手順 3:エクスポートした Excel ファイルに書式を適用する

Excel へのエクスポートでは、データの出所に関わらず、書式設定が重要になります。スタイルの適用、列幅の調整、数値書式の設定により、ファイルの可読性と実用性が大きく向上します。

以下は、エクスポートしたワークシートに対して適用できる代表的な書式設定の例です。

CellStyle headerStyle = workbook.Styles.Add("HeaderStyle");
headerStyle.Font.IsBold = true;
headerStyle.Font.FontName = "Yu Gothic UI";
headerStyle.Font.Size = 12f;
headerStyle.HorizontalAlignment = HorizontalAlignType.Center;
headerStyle.VerticalAlignment = VerticalAlignType.Center;

CellStyle dataStyle = workbook.Styles.Add("DataStyle");
dataStyle.Font.FontName = "Yu Gothic UI";
dataStyle.Font.Size = 11f;

// ヘッダーのスタイルを適用
CellRange headerRange = worksheet.Range[1, 1, 1, ordersTable.Columns.Count];
headerRange.Style = headerStyle;
// データ行のスタイルを適用
worksheet.Range[2, 1, worksheet.LastRow, worksheet.LastColumn].Style = dataStyle;

// 列幅と行高を自動調整
worksheet.AllocatedRange.AutoFitColumns();
worksheet.AllocatedRange.AutoFitRows();

// 日付と通貨の書式を設定
worksheet.Range[$"D2:D{worksheet.LastRow}"].NumberFormat = "#,##0";
worksheet.Range[$"E2:E{worksheet.LastRow}"].NumberFormat = "¥#,##0.00";
worksheet.Range[$"F2:G{worksheet.LastRow}"].NumberFormat = "yyyy-mm-dd";

書式適用後の Excel ファイルの例は以下のとおりです。

書式付きで DataGridView を Excel に出力(C#)

これらの書式設定は、レポート要件に応じて自由に組み合わせたり拡張したりできますが、データ抽出ロジックを変更する必要はありません。

Spire.XLS for .NET は、条件付き書式やグラフなど、さらに高度な Excel 機能にも対応しています。詳しくは、C# で Excel ファイルを作成する方法をご参照ください。


パフォーマンスおよび実運用上の注意点

大量の DataGrid または GridView データをエクスポートする場合は、以下の点に注意するとよいでしょう。

  • デスクトップアプリでは非同期処理でエクスポートを実行する
  • Excel 生成中に UI スレッドをブロックしない
  • 必要な列、または表示中の列のみをエクスポートする
  • ASP.NET アプリケーションではサーバー側で Excel ファイルを生成する

エクスポート処理は UI コントロールではなく DataTable を基盤としているため、データ量が増えても保守性・拡張性を維持できます。


まとめ

C# で DataGrid、DataGridView、GridView のデータを Excel にエクスポートする際、Microsoft Office Interop は必須ではありません。表示中のデータを DataTable に変換し、プログラムから Excel ファイルを生成することで、安定性と再利用性の高いエクスポート機能を実装できます。

UI とエクスポート処理を明確に分離し、書式設定にも柔軟に対応できるこの方法は、デスクトップアプリケーションおよび Web アプリケーションの実務的なレポート作成に適しています。ライブラリの評価や動作確認を行う場合は、一時ライセンスを申請することも可能です。


FAQ

Q1:C# で DataGridView のデータを Excel にエクスポートするにはどうすればよいですか?

A1:表示中の DataGridView データを DataTable に変換し、Spire.XLS for .NET を使用してプログラムから Excel ファイルを生成すれば、Microsoft Excel に依存せずにエクスポートできます。

Q2:GridView を Excel にエクスポートする際に書式を設定できますか?

A2:はい。Spire.XLS を使用すれば、スタイルの適用、列幅の調整、数値書式の設定などを行い、読みやすく実用的な Excel レポートを作成できます。

Q3:C# で DataGrid や GridView を Excel にエクスポートするには Microsoft Excel のインストールが必要ですか?

A3:いいえ。Spire.XLS のようなライブラリを使用すれば、DataTable から直接 Excel ファイルを生成できるため、Excel をインストールする必要はありません。サーバー環境やクラウド環境にも適しています。

Read 9 times