IRONSOFTWAREHOME
他のコンポーネントと比較する

ASP.NETから Excel へのエクスポート: IronXL 、ClosedXML、EPPlus の比較

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

データを Excel にエクスポートすることは、 ASP.NET Core Web アプリケーションの標準要件です。 販売レポートを生成する場合、ユーザーが GridView コンテンツをダウンロードできるようにする場合、またはデータベース クエリから CSV ファイルを生成する場合、選択するアプローチによって、結果のファイルが Microsoft Excel できれいに開くか、または形式の警告がトリガーされるかが決まります。 この記事では、C# 開発者が利用できる最も一般的な Excel エクスポート方法 (従来の HTML ベースのストリーミングと、 IronXL、ClosedXML、EPPlus などの最新のライブラリ ソリューション) を比較し、プロジェクトに適したツールを選択できるようにします。

無料トライアルを開始して、 IronXL がASP.NET Coreアプリケーションで Excel ファイルの生成をどのように処理するかを確認してください。

ASP.NET CoreでデータをExcelにエクスポートする一般的な方法は何ですか?

ASP.NET Core開発者は、Excel エクスポート機能を追加するときにいくつかのパスを利用できます。 それぞれのアプローチは、出力ファイルの品質、実装に必要な労力、商用プロジェクトに対するライセンスの影響が異なります。

従来の MIME タイプ ストリーミングは最も古い手法です。 サーバーはレスポンスのContent-Typeヘッダーをapplication/vnd.ms-excelに設定し、HTMLテーブルを出力ストリームに書き込みます。 ブラウザはこれを Excel のダウンロードとして解釈しますが、ファイルには本物のスプレッドシート データではなく HTML マークアップが含まれています。 Microsoft Excelは不一致を検出し、ファイルを開く前に書式に関する警告を表示します。この方法では、数式、入力された列、または適切なセル書式設定はサポートされません。

ライブラリ ベースのソリューションは、 Microsoft によって定義されたOpen XML 形式を使用して本物の XLSX ファイルを構築するNuGetパッケージを追加します。 オプションには、 IronXL、ClosedXML、EPPlus などがあります。 これら 3 つのツールはすべて、警告なしで開くことができ、セル レベルの書式設定をサポートし、 .NET Coreで動作する有効な Excel ファイルを生成します。 ファイル ダウンロードに関する公式 for .NETドキュメントでは、これらすべてのアプローチで使用される基礎となるASP.NET Coreメカニズムについて説明しています。

以下の表は主な相違点をまとめたものです:

Excelエクスポートライブラリの比較:機能マトリックス
特徴MIMEタイプ / HTMLClosedXMLEPPlusIronXL
本物のXLSX出力なしはいはいはい
CSVファイルのサポートマニュアル制限あり制限ありネイティブ
Excelの警告なしで開くなしはいはいはい
数式サポートなしはいはいはい
JSONとXMLのエクスポートなしなしなしはい
商用ライセンス製品の更新とサポートオプション:マサチューセッツ工科大学ポリフォームコマーシャル
.NET Coreのサポートはいはいはいはい

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

エクスポート コードを記述する前に、 NuGetパッケージ マネージャーまたは.NET CLI を使用してIronXL をプロジェクトに追加します。 IronXL はMicrosoft Office や COM 相互運用性に依存しないため、 .NETでサポートされているどのオペレーティング システムでも簡単にインストールできます。

dotnet add package IronXL.Excel

または、Visual Studio のパッケージ マネージャー コンソールを使用します。

PM > Install-Package IronXL.Excel

パッケージをインストールしたら、Excelファイルを生成する必要があるコントローラーやサービスクラスにusing IronXL;を追加します。 基本的なエクスポート シナリオでは追加の構成は必要ありません。 ライセンスと展開オプションについては、 IronXLライセンス ページをご覧ください。

従来のGridViewエクスポートアプローチはどのように機能しますか?

従来の WebForms や一部の古い MVC パターンでは、開発者は GridView データを HTML としてレンダリングし、誤解を招く Content-Type ヘッダーを使用してブラウザーにストリーミングすることでエクスポートしていました。 アプリケーションはResponse.AddHeaderを呼び出してファイル名を設定し、HTML出力を直接書き込みます。

// Traditional approach -- exports HTML disguised as Excel
public void ExportToExcel(object sender, EventArgs e)
{
    Response.Clear();
    Response.Buffer = true;
    Response.ContentType = "application/vnd.ms-excel";
    Response.AddHeader("content-disposition", "attachment;filename=Report.xls");
    StringWriter stringWriter = new StringWriter();
    HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter);
    // Render grid content as HTML
    DataGrid1.RenderControl(htmlTextWriter);
    Response.Write(stringWriter.ToString());
    Response.End();
}

public override void VerifyRenderingInServerForm(Control control)
{
    // Required to prevent server form rendering errors
}

レガシー出力

ASP.NETからExcelへのエクスポート:C#開発者向けのベストツール比較:画像1 - レガシーExcelエクスポート出力

このメソッドはサーバー側のバリデーションをバイパスするためにVerifyRenderingInServerFormをオーバーライドする必要があります。 生成されたファイルには、本物のスプレッドシート データではなく HTML が含まれているため、ユーザーがファイルを開くと、Microsoft Excel によって形式の警告が表示されます。 出力では、ワークシートの数式、入力されたデータ列、またはセル レベルの書式設定をサポートできません。 新しいASP.NET Coreの開発では、適切なExcelライブラリを使用することが推奨され、このパターンを避けるべきです。

IronXLはどのようにASP.NET CoreでのExcelファイル生成を簡素化しますか?

IronXLは、Microsoft OfficeやCOM相互運用性を必要とせずに、本物のXLSXファイルを作成するためのAPIを提供します。このライブラリは、ワークブックオブジェクトを完全にマネージドコードで構築するため、追加の依存関係なしでLinux、macOS、Windowsで実行できます。

次の例では、ワークブックを作成し、ワークシートに売上データを入力し、ヘッダー行に太字の書式を適用し、ファイルをブラウザにストリーミングします。

using IronXL;
using Microsoft.AspNetCore.Mvc;

public class ExportController : Controller
{
    [HttpPost]
    public IActionResult ExportReport()
    {
        // Create workbook and worksheet
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Sales Data");

        // Add header row
        worksheet["A1"].Value = "Product";
        worksheet["B1"].Value = "Quantity";
        worksheet["C1"].Value = "Revenue";

        // Populate data rows
        worksheet["A2"].Value = "Widget A";
        worksheet["B2"].Value = 150;
        worksheet["C2"].Value = 4500.00;
        worksheet["A3"].Value = "Widget B";
        worksheet["B3"].Value = 230;
        worksheet["C3"].Value = 6900.00;

        // Apply bold formatting to headers
        var headerRange = worksheet["A1:C1"];
        headerRange.Style.Font.Bold = true;

        // Stream file to browser
        byte[] fileBytes = workbook.ToByteArray();
        string filename = $"SalesReport_{DateTime.なしw:yyyyMMdd}.xlsx";
        return File(fileBytes,
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            filename);
    }
}
C#

IronXLアウトプット

ASP.NETからExcelへのエクスポート:C#開発者向けのベストツール比較:画像2 - IronXLによるExcelエクスポート出力

WorkBook.Createはメモリ内で新しいExcelドキュメントを構築します。 CreateWorkSheetはユーザーがExcelウィンドウの下部で見る名前付きタブを追加します。 セルの値は、Excelスタイルの範囲表記法("B2")を使用して割り当てられます。これにより、多くのC#開発者が読みやすく、保守しやすいと感じます。

ToByteArray()メソッドは完成したワークブックをバイト配列に変換し、ASP.NET CoreのFile()レスポンスメソッドが正しいMIMEタイプとコンテンツ配置ヘッダーとともにユーザーのブラウザに直接ストリームします。 ダウンロードしたファイルは、形式の警告なしで Excel で開きます。

IronXL は、 SaveAsCsv メソッドによる CSV 形式へのエクスポートもサポートしています。

// Export as CSV instead of XLSX
workbook.SaveAsCsv("output.csv");

ワークシートデータをJSONやXMLとしてエクスポートする必要があるシナリオでは、IronXLはSaveAsXmlメソッドを提供し、これらはClosedXMLやEPPlusでは利用できない機能です。 追加のパターンについては、 IronXLコード例API リファレンスを参照してください。

IronXL はDataTable とデータベースの統合をどのように処理しますか?

多くのASP.NET Coreアプリケーションは、データをエクスポートする前に、SQL Server または別のリレーショナル データベースからデータを取得します。 IronXLはDataTableをワークシートに直接ロードするための最先端のサポートを提供しており、行を手動で繰り返す必要がなくなります。

以下の例では、ADO.NETを使用してデータベースをクエリし、結果のDataTableからExcelワークシートにデータを入力します。

using IronXL;
using System.Data;
using System.Data.SqlClient;
using Microsoft.AspNetCore.Mvc;

public class ReportController : Controller
{
    private readonly string _connectionString;

    public ReportController(IConfiguration config)
    {
        _connectionString = config.GetConnectionString("DefaultConnection");
    }

    [HttpGet]
    public IActionResult DownloadReport()
    {
        DataTable table = new DataTable();

        using (SqlConnection connection = new SqlConnection(_connectionString))
        {
            string query = "SELECT OrderId, CustomerName, Total, OrderDate FROM Orders";
            using SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
            adapter.Fill(table);
        }

        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Orders");

        // Write column headers from DataTable schema
        for (int col = 0; col < table.Columns.Count; col++)
        {
            worksheet[0, col].Value = table.Columns[col].ColumnName;
        }

        // Write data rows
        for (int row = 0; row < table.Rows.Count; row++)
        {
            for (int col = 0; col < table.Columns.Count; col++)
            {
                worksheet[row + 1, col].Value = table.Rows[row][col].ToString();
            }
        }

        byte[] fileBytes = workbook.ToByteArray();
        return File(fileBytes,
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "Orders.xlsx");
    }
}

このパターンにより、コントローラーはスリムかつテスト可能な状態になります。 データベース クエリとワークブックの構築は明確に分離されているため、データ ソースを交換したり、要約データ用のワークシートを追加したりすることが簡単になります。 既存のExcelファイルをDataTableに読み込む方法についてのガイダンスは、IronXLのExcelファイルの読み取りに関するハウツーガイドを参照してください。

ClosedXMLとEPPlusの比較は?

ClosedXML は、アクセス可能な API を使用して Microsoft の Open XML SDK をラップします。 NuGetからインストールします:

Install-Package ClosedXML
SHELL

次の例は、一般的な ClosedXML エクスポート アクションを示しています。

using ClosedXML.Excel;
using Microsoft.AspNetCore.Mvc;

public class ExportController : Controller
{
    [HttpGet]
    public IActionResult ExportWithClosedXML()
    {
        using var workbook = new XLWorkbook();
        var worksheet = workbook.AddWorksheet("Data");
        worksheet.Cell(1, 1).Value = "Name";
        worksheet.Cell(1, 2).Value = "Amount";
        worksheet.Cell(2, 1).Value = "Alpha";
        worksheet.Cell(2, 2).Value = 1200;

        using var stream = new MemoryStream();
        workbook.SaveAs(stream);
        return File(stream.ToArray(),
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "export.xlsx");
    }
}

ClosedXMLの出力

ASP.NETからExcelへのエクスポート:C#開発者向けのベストツール比較:画像3 - ClosedXMLによるExcelエクスポート出力

ClosedXMLは、IronXLが使用する範囲文字列表記ではなく、整数ベースのセルアドレッシング(Cell(row, col))を使用します。 どちらの方法でも有効な XLSX ファイルが生成されます。 ClosedXMLはマサチューセッツ工科大学ライセンスの下でリリースされており、商業ライセンスの懸念なしにオープンソースプロジェクトに適しています。 ClosedXML GitHubリポジトリでは、問題追跡とコミュニティが提供した例が提供されます。

EPPlusは、非営利目的での使用向けにポリフォーム非営利ライセンスの下で同様の機能を提供しており、本番環境での展開には商用ライセンスが必要です。 商用製品で使用する前に、EPPlusライセンス概要を確認してください。 EPPlus と ClosedXML はどちらも有効な Excel ファイルを生成しますが、どちらもIronXLのようなネイティブの CSV、JSON、または XML エクスポートは提供しません。

以下の表は、運用中のASP.NET Coreアプリケーションに関連する特定の機能を比較したものです。

実稼働ASP.NET Coreプロジェクトの詳細な機能比較
能力IronXLClosedXMLEPPlus
CSV、JSON、XMLエクスポートネイティブ利用不可利用不可
DataTable統合はいはいはい
技術サポートライセンスに含まれていますコミュニティのみ有料プラン
Microsoft Officeへの依存なしneなしneなしne
クロスプラットフォーム(Linux上 for .NET )はいはいはい
ライセンスの種類コマーシャルマサチューセッツ工科大学ポリフォーム / 商業

プロジェクトに適したライブラリを選択するにはどうすればよいでしょうか?

適切な Excel エクスポート ライブラリの選択は、必要な出力形式、プロジェクトのライセンス制約、専門家のサポートが必要かどうかという 3 つの要素によって決まります。

アプリケーションで複数形式の出力 (XLSX、CSV、JSON、XML) が必要な場合、保証されたサポート チャネルを必要とする商用製品を構築する場合、または数式の評価、セルのスタイル設定、IronXLの生成などの高度な Excel 機能が必要な場合は、IronXL を選択してください。 IronXLのドキュメントは、すべてのAPIサーフェスを詳細に説明しており、サポートチームはライセンス保有者に直接対応します。 追加のパターンとチュートリアルについては、 IronXLブログをご覧ください。

プロジェクトがオープンソースまたは非商用であり、XLSX 出力のみが必要な場合は、ClosedXML を選択します。 マサチューセッツ工科大学ライセンスには再配布に関する制限がなく、APIはコミュニティリソースを通じてよく文書化されています。

EPPlusを選ぶとき は、既存のコードベースがすでにEPPlusを使用しており、他のライブラリに移行することが商用ライセンスの購入よりも高くつく場合です。

IronXLを他の選択肢と比較評価しているチームに対して、IronXLトライアルライセンス では購入前にすべての機能を試すことができます。 Excel ファイルの読み取りと書き込みに関する追加のコード例は、 IronXLの例ページで入手できます。

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

ASP.NET Coreで利用可能な Excel エクスポート方法を確認したので、次の手順に進みます。

  • IronXLをインストールするには、dotnet add package IronXL.Excelを使用し、はじめにガイドを通じて、最初のワークブックを作成してください。
  • データベースのエクスポート、複数シートのワークブック、スタイル設定されたレポートなど、ユースケースに一致するシナリオのIronXLサンプル ページを確認して、コード パターンを比較します
  • IronXLライセンス ページにアクセスしてライセンスを評価し、開発、ステージング、本番環境の展開のオプションを理解します。
  • 追加のフォーマットを探求するには、アプリケーションが同じコードベースから複数の形式でデータをエクスポートする必要がある場合、SaveAsXmlメソッドをテストしてください。
  • レガシーコードから移行するには、ソリューション内の既存のResponse.ContentType = "application/vnd.ms-excel"パターンを特定し、IronXLワークブック作成に置き換えて、ユーザーに対してフォーマット警告を排除してください。

本番環境でのデプロイには、ライセンスを購入してプロフェッショナルサポートを利用し、IronXLライセンス条項を遵守してください。

最初のステップ:
arrow pointer
ご注意: ClosedXMLとEPPlusは、それぞれの所有者の登録商標です。 このサイトは、ClosedXML または EPPlus ソフトウェアとは提携しておらず、承認や支援を受けていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
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日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。