フッターコンテンツにスキップ
他のコンポーネントと比較する

ASP.NETからExcelへのエクスポート:C#開発者のためのベストツール比較

データをExcelファイルにエクスポートすることは、.NET Coreウェブアプリケーションでは不可欠です。 データベースからレポートを生成する場合も、ユーザーがGridViewのコンテンツをエクスポートできるようにする場合も、CSVエクスポートを作成する場合も、開発者はExcelドキュメントを作成するための信頼できる方法を必要としています。 これらのファイルは、ブラウザの警告やダウンロードを処理するための新しいページを必要とすることなく、Microsoft Excelで正しく開く必要があります。

この記事では、ASP.NET CoreでのExcelエクスポートの一般的なアプローチを比較し、従来の方法とIronXL、ClosedXML、EPPlusのような最新のライブラリを検証します。

無料トライアルを開始して、IronXLがASP.NET CoreプロジェクトでExcelファイル作成をどのように簡素化するかをお試しください。

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

データをエクスポートする最も簡単な方法には、いくつかの異なるアプローチがあります。 ほとんどのワークフローは、エクスポートパスを選択する前に、データを取得するための接続文字列を確立することから始まります。

  • 伝統的なMIMEタイプアプローチ:このレガシーな方法は、Content Typeプロパティ(application/vnd.ms-excelに設定)を使用し、HTMLコンテンツをブラウザにストリームします。 古いシステムではデフォルトのソリューションとして機能しますが、フォーマット警告が表示されることがよくあります。
  • ライブラリベースのソリューション: 最新のライブラリでは、オープンXMLフォーマットを使用して本物のXLSXファイルを生成するために、NuGetリファレンスを追加する必要があります。 IronXL、ClosedXML、EPPlusは、ワークブックオブジェクトを作成し、適切なフォーマットでファイルを保存するためのAPIを提供します。

    フィーチャー MIMEタイプ/HTML クローズドXML EPPlus IronXL
    純正XLSX出力 なし はい はい はい
    CSVファイルのサポート マニュアル 制限的 制限的 ネイティブ
    エクセルの警告なし なし はい はい はい
    数式サポート なし はい はい はい
    JSON/XMLエクスポート なし なし なし はい
    商用ライセンス 該当なし MIT ポリフォーム 商用
    .NET Coreサポート はい はい はい はい

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

レガシーなWebFormsやいくつかの古いMVCパターンでは、開発者はGridViewのデータをHTMLとしてレンダリングしてエクスポートすることがよくあります。 アプリケーションは、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
}
// 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
}
$vbLabelText   $csharpLabel

レガシー出力

ASP.NET Export to Excel:C#開発者のためのベストツール比較:画像1 - レガシーなExcelエクスポート出力

このメソッドは、サーバー側の検証をバイパスするために public override void VerifyRenderingInServerForm<//code> 関数を必要とします。 しかし、生成されたファイルには、純正のExcel形式のデータではなくHTMLが含まれているため、Microsoft Excelが形式警告を表示する原因となっています。 このアプローチでは、適切なExcelシートの書式、数式、入力された列を生成することはできません。

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

IronXLは、Microsoft Officeに依存することなく、本物のExcelファイルを作成するための最新のAPIを提供します。 ユーザーがユーザー体験を中断することなく、同じページからダウンロードを開始できるようにします。 次の例は、データをExcelドキュメントにエクスポートし、ユーザーのブラウザにストリーミングする方法を示しています:

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 from your data source
        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;
        // Style the header cells
        var headerRange = worksheet["A1:C1"];
        headerRange.Style.Font.Bold = true;
        // Generate file for browser download
        byte[] fileBytes = workbook.ToByteArray();
        string filename = $"SalesReport_{DateTime.Now:yyyyMMdd}.xlsx";
        return File(fileBytes,
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            filename);
    }
}
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 from your data source
        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;
        // Style the header cells
        var headerRange = worksheet["A1:C1"];
        headerRange.Style.Font.Bold = true;
        // Generate file for browser download
        byte[] fileBytes = workbook.ToByteArray();
        string filename = $"SalesReport_{DateTime.Now:yyyyMMdd}.xlsx";
        return File(fileBytes,
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            filename);
    }
}
$vbLabelText   $csharpLabel

IronXLアウトプット

ASP.NET Export to Excel:C#開発者のためのベストツール比較:画像2 - IronXLからExcelへのエクスポート出力

IronXLのWorkBook.Createメソッドは新しいExcelドキュメントを生成し、CreateWorkSheetメソッドは名前付きワークシートタブを追加します。 このライブラリは、すべてのOpen XMLの複雑さを内部で処理するため、開発者はセルにデータを入力することに集中できます。

ToByteArray()メソッドは、ワークブックをASP.NET CoreのFile()レスポンスに適したバイトに変換し、ブラウザのダウンロード用に正しいコンテンツ処分ヘッダーを自動的に設定します。 ユーザーには、警告なしで開く本物のXLSXファイルを提供します。

カンマ区切りの値形式を必要とするCSVエクスポートシナリオのために、IronXLはSaveAsCsvメソッドを提供します:

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

ClosedXMLとEPPlusの比較は? **ClosedXML**は、MicrosoftのOpen XML SDKをユーザーフレンドリーなAPIでラップします。 ソリューションエクスプローラーで、Install-Package ClosedXML で NuGet 経由でインストールしてください: ```cs using ClosedXML.Excel; 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"; using var stream = new MemoryStream(); workbook.SaveAs(stream); return File(stream.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "export.xlsx"); } ``` ### ClosedXMLの出力 [ASP.NET Export to Excel:C#開発者のためのベストツール比較:画像3 - ClosedXMLからExcelへのエクスポート出力](/static-assets/excel/blog/asp-net-export-to-excel/asp-net-export-to-excel-3.webp)。 **EPPlus**は同様の機能を提供しますが、商用利用のためには[ライセンス条項](https://www.epplussoftware.com/en/LicenseOverview)に注意を払う必要があります。 どちらのライブラリも有効なExcelファイルを作成しますが、IronXLのネイティブのCSVエクスポートとJSON変換のサポートがありません。 ## 開発者は Excel エクスポートのためにどのライブラリを選択すべきですか? Excelエクスポートが必要な.NET Coreアプリケーションの場合、ライブラリの選択はプロジェクトの要件に依存します: **次のような場合はIronXLを選択してください:**複数形式のサポート (XLSX、CSV ファイル、JSON、XML) が必要な場合、[専門的なサポート](/csharp/excel/docs/)が必要な場合、または ASP プロジェクト内で複雑な Excel 機能との互換性を保証する必要がある商用アプリケーションを構築する場合。 **ClosedXML を選択する場合:**基本的な Excel ファイル生成で MIT ライセンスを必要とするオープンソース プロジェクトを構築する場合。 **EPPlus を選択する場合:**既存のプロジェクトですでにEPPlusを使用しており、移行コストがライセンスの考慮事項を上回る場合。 |能力|IronXL|クローズドXML|EPPlus| | --- | --- | --- | --- | |CSV/JSON/XMLエクスポート|ネイティブ|✗|✗| |DataTable 統合|✓|✓|✓| | プロフェッショナルサポート |含まれるもの|コミュニティ|有料レベル| |システム要件|なし|なし|なし| ## まとめ ASP.NETからExcelへのエクスポート機能を実装するには、従来のHTMLベースの方法と最新のライブラリソリューションのどちらかを選択する必要があります。 同時に、コンテンツ配置に新しい`HtmlTextWriter`と`Response.AddHeader`を使用する従来のMIMEタイプのアプローチは、機能的なダウンロードを作成しますが、エクスポートされたファイル形式は警告を引き起こし、真のExcel機能を欠いています。 IronXLは複数の出力形式、直感的なワークシートとワークブックの管理、データ行とセルの適切な取り扱いを備えた本物のExcelファイル生成を提供します。 このライブラリは、void VerifyRenderingInServerForm のオーバーライドと object sender, EventArgs e パターンをレガシーコードから排除します。 実装ガイダンスについては、IronXLのドキュメントと[コード例](/csharp/excel/examples/read-excel/)を参照してください。 [IronXLを本番環境に導入し、ユーザーがブラウザからダウンロードできるプロフェッショナルなExcelドキュメントを作成するには、ライセンスをご購入ください](ライセンス)。
今IronXLを始めましょう。
green arrow pointer

よくある質問

ASP.NET CoreでExcelにエクスポートするためのIronXLの主な機能は何ですか?

IronXLはシームレスなExcelファイルの生成と操作を提供し、開発者はMicrosoft Excelをインストールすることなくデータをエクスポートできます。XLS、XLSX、CSVのような様々なフォーマットをサポートし、スタイリング、フォーマット、データ操作のための堅牢な機能を提供します。

IronXL は、ClosedXML for ASP.NET Core プロジェクトと比較してどうですか?

IronXLは、複雑なデータ構造のエクスポートをより広範囲にサポートし、スタイリングや画像埋め込みなどの機能を備えています。ClosedXMLはユーザーフレンドリーですが、特に大規模なアプリケーションでは、IronXLが提供する高度な機能が欠けているかもしれません。

IronXLはASP.NETでデータベースからExcelレポートを作成するのに適していますか?

IronXLはデータベースからExcelレポートを作成するのに理想的で、さまざまなデータソースから簡単にデータをエクスポートし、Microsoft Excelと互換性のあるファイルを作成します。

EPPlusよりIronXLを使用する利点は何ですか?

IronXLは、より包括的なAPI、大規模なデータセットに対するより優れたパフォーマンス、Excelファイルの作成と編集のためのより幅広い機能を提供し、複雑なASP.NET Coreアプリケーションにとってより汎用性の高い選択肢となります。

IronXLは大量のデータセットを効率的に処理できますか?

IronXLはパフォーマンスに最適化されており、大規模なデータセットを効率的に処理できるため、アプリケーションの速度を損なうことなく、迅速なデータ処理とエクスポートが可能です。

IronXLはExcelにエクスポートするためにMicrosoft Officeをインストールする必要がありますか?

IronXLはMicrosoft Officeのインストールを必要としません。独立して動作し、ASP.NET CoreアプリケーションでExcelファイルを作成、操作することができます。

カーティス・チャウ
テクニカルライター

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

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。