IRONSOFTWAREHOME
IRONXLの使用

IronXLを使用して C# で GridView から Excel にエクスポートする方法

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

GridViewのデータをExcelファイルにエクスポートすることは、 ASP.NET Webアプリケーションにおいて最も一般的な要件の1つです。 従来の方法では、StringWriterを使用して偽のExcelファイルを作成し、ユーザーがそれを開こうとするとブラウザ警告やフォーマットエラーを引き起こします。 このガイドでは、IronXLを使用してGridViewデータを適切にフォーマットされた.xlsxファイルにエクスポートする方法を紹介し、従来の方法で開発者が直面する頭痛の種を解消します。

従来のGridViewエクスポート方式が問題を引き起こすのはなぜか?

ASP.NET C#でGridViewからExcelへのエクスポートの古典的な方法は、HTMLをレンダリングし、Content-Disposition添付ファイル名の値と共に設定することを含みます。 この方法には、実行時エラーを回避するためにpublic override void VerifyRenderingInServerFormをオーバーライドする必要があります。 結果のファイルは本当のExcelファイルではなく、.xls拡張子でHTMLが偽装しているため、ユーザーが開くとExcelが警告メッセージを表示します。

具体的には、従来の手法には次のような欠点がある。

  • Excelを開くたびに"ファイル形式と拡張子が一致しません"という警告が表示されます データが生のHTMLとして保存されるため、書式設定とデータ型が失われます。
  • 回避策としてVerifyRenderingInServerFormを実装する必要があり、プロジェクトに技術的負債を追加します。 生成されたファイルには適切なセルメタデータが欠落しているため、下流の自動化ツールやレポートツールでは使用できません。

IronXLは、サーバーにMicrosoft Officeのインストールを必要とせずに、本物の.xlsx Excelファイルを作成することでこれらの問題を解決します。 適切なデータ型、スタイル、およびOOXML構造が保持された状態で、どの表計算ソフトでも問題なく開けるファイルが生成されます。

ASP.NETプロジェクトにIronXLをインストールするにはどうすればよいですか?

エクスポートロジックを記述する前に、 NuGetパッケージマネージャーを使用してIronXLをプロジェクトに追加してください。 Visual StudioでPackage Manager 短所oleを開き、実行してください:

PM > Install-Package IronXL.Excel

または、NuGetパッケージマネージャーUIでIronXL.Excelを検索し、そこからインストールしてください。 インストールが完了したら、任意のコードビハインドファイルでIronXL名前空間を参照できます。

IronXLは.NET Standard 2.0以降を対象としているため、最新のASP.NET Coreプロジェクトだけでなく、従来のASP.NET Frameworkアプリケーションでも動作します。 COM相互運用機能も、Officeのインストールも、Webサーバーへの追加のネイティブ依存関係も必要ありません。

詳細については、IronXLのインストールガイドおよびIronXLのNuGetパッケージページをご覧ください。

ASP.NET GridViewをエクスポート用に設定するにはどうすればよいですか?

GridViewコントロールとエクスポートボタンを追加します。 マークアップは標準的なWebフォームです。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="GridViewExportTest.Default" %>
<!DOCTYPE html>
<html>
<head runat="server">
    <title>Export GridView to Excel</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <h2>IronXL GridView Export Demo</h2>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true"
                HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White" CellPadding="5">
            </asp:GridView>
            <br />
            <asp:Button ID="btnExport" runat="server" Text="Export to Excel (.xlsx)"
                OnClick="btnExport_Click" />
        </div>
    </form>
</body>
</html>

このマークアップは、バインドされたGridViewとエクスポートをトリガーするボタンを持つシンプルなページを作成します。 DataTableから直接列名を読み取ることを意味します。

サンプルデータをGridViewにバインドする

コードビハインドで、グリッドにSessionに保管してください。

using System;
using System.Data;
using System.Web.UI;
using IronXL;

namespace GridViewExport
{
    public partial class Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindGridView();
            }
        }

        private void BindGridView()
        {
            DataTable dt = new DataTable("Employees");
            dt.Columns.Add("EmployeeID", typeof(int));
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Department", typeof(string));
            dt.Columns.Add("Salary", typeof(decimal));

            dt.Rows.Add(1, "John Smith", "Engineering", 75000);
            dt.Rows.Add(2, "Sarah Johnson", "Marketing", 65000);
            dt.Rows.Add(3, "Mike Wilson", "Sales", 70000);
            dt.Rows.Add(4, "Emily Davis", "Engineering", 80000);

            GridView1.DataSource = dt;
            GridView1.DataBind();

            // Store DataTable in Session for export postback
            Session["GridData"] = dt;
        }
    }
}

Sessionに格納することで、データベースの再クエリやエクスポートボタンによってトリガーされるポストバック中のデータの再構築を回避します。 実際のアプリケーションでは、ハードコードされた行をEntity FrameworkまたはADO .NETを使用したデータベースクエリに置き換えてください。

ASP .NET C#でGridViewからExcelへのエクスポート: クリーンなC#ソリューション: 画像1 - サンプルGridViewデータを示すUI

IronXLを使用してGridViewのデータをExcelにエクスポートするにはどうすればよいですか?

GridViewエクスポートのクリーンなアプローチでは、WorkBookに変換し、結果をブラウザに直接ストリームします。 以下に完全なエクスポート方法を示します。

protected void btnExport_Click(object sender, EventArgs e)
{
    ExportGridViewToExcel();
}

private void ExportGridViewToExcel()
{
    DataTable dt = (DataTable)Session["GridData"];

    // Create a workbook and load data from the DataTable
    WorkBook workbook = WorkBook.Create();
    WorkBook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } }, workbook);
    WorkSheet worksheet = workbook.DefaultWorkSheet;

    // Apply header row formatting
    var headerRange = worksheet["A1:D1"];
    headerRange.Style.Font.Bold = true;
    headerRange.Style.Font.Size = 12;
    headerRange.Style.SetBackgroundColor("#3AC0F2");

    // Stream the file to the browser
    string filename = "GridViewExport_" + DateTime.Now.ToString("yyyyMMdd") + ".xlsx";
    Response.Clear();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("content-disposition", "attachment;filename=" + filename);
    workbook.SaveAsStream(Response.OutputStream, IronXL.Enum.FileFormat.Xlsx);
    Response.Flush();
    Response.End();
}

エクスポートの手順をステップごとに解説します

このプロセスは、論理的に3つのステップに分けられます。

  1. DataTableを取得する -- DataTableを返します。 これにより、データベースへの重複呼び出しを回避できます。
  2. WorkBookを作成する -- DataTableごとに自動的に1つのワークシートを作成し、列ヘッダーと行の値を適切なセルにコピーします。
  3. ブラウザにストリームする -- Content-TypeをOOXML MIMEタイプに設定し、.xlsx拡張子でブラウザダウンロードをトリガーします。 一時ファイルはディスクに書き込まれません。

これは、従来のHtmlTextWriterアプローチとは根本的に異なります。 エクスポートされたファイルはOpen XML形式(Microsoft Excelがネイティブで使用している形式と同じ)を使用しているため、警告なしで開くことができます。

データをプログラムで読み込むことに関する詳細情報は、IronXL WorkBookドキュメントおよびDataTableをExcelにエクスポートする方法をご覧ください。

ASP .NET C#でGridViewからExcelへのエクスポート: クリーンなC#ソリューション: 画像2 - エクスポートされたExcelファイル

Excelファイルをストリーミングではなくディスクに保存するにはどうすればよいですか?

アプリケーションがエクスポートをサーバー上でアーカイブし、ユーザーにダウンロードリンクを提供する必要がある場合、Response.OutputStreamにストリーミングする代わりに、ファイルパスにワークブックを保存してください。

private void SaveExcelToDisk(WorkBook workbook, string exportFolder)
{
    // Ensure the exports directory exists
    if (!System.IO.Directory.Exists(exportFolder))
    {
        System.IO.Directory.CreateDirectory(exportFolder);
    }

    string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
    string filename = System.IO.Path.Combine(exportFolder, $"Report_{timestamp}.xlsx");

    workbook.SaveAs(filename);

    // Return the relative path for generating a download link
    string relativePath = "~/Exports/Report_" + timestamp + ".xlsx";
    Response.Write($"<script>alert('File saved to {relativePath}');</script>");
}

ストリーミングとディスク保存の選択

ストリーミング方式とディスク保存方式のエクスポート戦略の比較
戦略長所短所最適な用途
ブラウザにストリーミングディスク使用量なし、即時配信アーカイブまたは再送信できませんオンデマンドのユーザーエクスポート
ディスクに保存ファイルは監査、再ダウンロード、またはメール送信のために保持されます。クリーンアップ作業、ディスク容量管理が必要です定期レポート、監査証跡

ほとんどのインタラクティブなWebアプリケーションでは、ブラウザへの直接ストリーミングが最適な選択肢です。ファイルをメールで送信する必要がある場合、コンプライアンスのために保存する必要がある場合、またはファイル管理ページからの再ダウンロードを許可する必要がある場合は、ディスクに保存してください。

エクスポートしたExcelシートに高度な書式設定を適用するにはどうすればよいですか?

IronXLを使えば、セルスタイル、列幅、数値形式などを細かく制御できます。 以下の例は、プロフェッショナルなスタイルのエクスポートを作成する方法を示しています。

private void ExportWithFormatting()
{
    DataTable dt = new DataTable("Products");
    dt.Columns.Add("Product", typeof(string));
    dt.Columns.Add("Category", typeof(string));
    dt.Columns.Add("Price", typeof(decimal));
    dt.Columns.Add("InStock", typeof(bool));

    dt.Rows.Add("Widget A", "Hardware", 29.99m, true);
    dt.Rows.Add("Widget B", "Hardware", 49.99m, false);
    dt.Rows.Add("Service Plan", "Support", 199.00m, true);

    WorkBook workbook = WorkBook.Create();
    WorkBook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } }, workbook);
    WorkSheet sheet = workbook.WorkSheets[0];

    // Style the header row
    sheet["A1:D1"].Style.Font.Bold = true;
    sheet["A1:D1"].Style.Font.Size = 13;
    sheet["A1:D1"].Style.SetBackgroundColor("#2196F3");
    sheet["A1:D1"].Style.Font.Color = "#FFFFFF";

    // Apply currency format to the Price column (column C, rows 2 onwards)
    sheet["C2:C4"].Style.NumberFormat.Format = "$#,##0.00";

    // Auto-size all columns for readability
    for (int col = 0; col < 4; col++)
    {
        sheet.AutoSizeColumn(col);
    }

    // Freeze the header row so it stays visible when scrolling
    sheet.FreezePanes(0, 0, 1, 0);

    workbook.SaveAs("FormattedExport.xlsx");
}

IronXLで利用可能な書式設定オプション

IronXLは、IronXL.Styles名前空間を通じて豊富なフォーマットプロパティを提供します。

-フォントスタイル- 太字、斜体、下線、フォントファミリー、サイズ -セルの背景色-- 16進数カラー文字列を直接受け付けます -数値および日付形式-- 通貨、パーセンテージ、日付パターンを含む、あらゆる Excel 書式文字列

  • 列幅: 手動ピクセル幅または自動フィッティングのAutoSizeColumn -ペインの固定-- スクロール中にヘッダー行または列を固定します。 -セルの境界線-- スタイルと色をカスタマイズ可能な4つの境界線すべて -セルを結合する-- レポートヘッダー用に、行または列をまたいでセルを結合する

API参照の完全版は、IronXLセルスタイリングドキュメントおよびIronXLナンバーフォーマットをご覧ください。

ASP .NET C#でGridViewからExcelへのエクスポート: クリーンなC#ソリューション: 画像3 - エクスポートされたフォーマット済みのExcelドキュメント

GridViewのエクスポートで大規模なデータセットをどのように処理しますか?

GridViewが数千行のデータにバインドされている場合、エクスポートを高速かつメモリ効率よく行うためのいくつかのテクニックがあります。

ページングとサーバーサイドデータテーブル

GridViewの表示ページのみをエクスポートしないでください。 データソースからWorkBook.LoadWorkSheetsFromDataSetを呼び出してください。 IronXLは、ワークブック全体を複数回メモリに読み込むことなく、1回の処理で行を書き込むため、数万行のデータにも対応できます。

複数のワークシートを追加する

DataTableオブジェクトを含めて、別々のタブを持つワークブックを生成できます。

DataSet exportSet = new DataSet();
exportSet.Tables.Add(GetEmployeeData());    // Sheet 1
exportSet.Tables.Add(GetDepartmentData());  // Sheet 2
exportSet.Tables.Add(GetSalaryReport());    // Sheet 3

WorkBook workbook = WorkBook.Create();
WorkBook.LoadWorkSheetsFromDataSet(exportSet, workbook);

Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=MultiSheetReport.xlsx");
workbook.SaveAsStream(Response.OutputStream, IronXL.Enum.FileFormat.Xlsx);
Response.Flush();
Response.End();

DataTable.TableNameはExcelのワークシートタブ名になります。 このパターンは、複数のビューにわたる関連データを組み合わせる管理レポートに適しています。

関連ガイド:

IronXLをGridViewのエクスポートに使用する主なメリットは何ですか?

IronXLを使用してGridViewデータをエクスポートする方法は、従来のHTMLラップ方式に比べて明確な利点があります。

  • 本物のExcelファイル: ブラウザの警告やエラーメッセージなしで開く有効な.xlsx形式を作成します。
  • Officeのインストールは不要です。Microsoft ExcelやOffice相互運用機能のないWebサーバーでも動作します。
  • VerifyRenderingInServerFormのオーバーライドなし: 従来のコードを煩雑にする定型的な回避策を排除します。 -完全な書式設定制御- セルのスタイル設定、数値書式の適用、ウィンドウ枠の固定、およびProfessionalシートのプログラムによる作成 -複数シートのサポート- 関連するデータセットを単一のワークブック内の別々のタブとしてエクスポートします -クロスプラットフォーム互換性- WindowsおよびLinuxサーバー(DockerコンテナおよびAzure App Serviceを含む)で正しく動作します

このライブラリはNuGetで入手可能で、 .NET 10を含むすべての最新 for .NETターゲットをサポートしています。また、CSVやODSなどの他の形式の読み書きもサポートしているため、アプリケーションにおけるスプレッドシート関連のあらゆるニーズに対応する単一の依存関係として利用できます。

他のExcelライブラリとの並列比較については、IronXL vs ClosedXMLIronXL機能の概要をご覧ください。

次のステップは何ですか?

これで、従来のHtmlTextWriter GridViewエクスポートをクリーンで警告のないIronXL実装に置き換えるために必要なすべてが揃いました。 今後の進め方は以下のとおりです。

無料トライアルをお試しください-- クレジットカード不要でIronXLの30日間無料トライアルを開始し、ご自身のプロジェクトでエクスポートコードをテストしてください。 IronXLのチュートリアルをもっとご覧ください。IronXLIronXLでは、データのインポート、セルの数式、グラフの生成、Excelテンプレートのワークフローについて解説しています。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。