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

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

データを 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タイプ / HTML ClosedXML EPPlus IronXL
本物の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 のパッケージ マネージャー コンソールを使用します。

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
}
// 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 Sub ExportToExcel(sender As Object, e As EventArgs)
    Response.Clear()
    Response.Buffer = True
    Response.ContentType = "application/vnd.ms-excel"
    Response.AddHeader("content-disposition", "attachment;filename=Report.xls")
    Dim stringWriter As New StringWriter()
    Dim htmlTextWriter As New HtmlTextWriter(stringWriter)
    ' Render grid content as HTML
    DataGrid1.RenderControl(htmlTextWriter)
    Response.Write(stringWriter.ToString())
    Response.End()
End Sub

Public Overrides Sub VerifyRenderingInServerForm(control As Control)
    ' Required to prevent server form rendering errors
End Sub
$vbLabelText   $csharpLabel

レガシー出力

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);
    }
}
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);
    }
}
Imports IronXL
Imports Microsoft.AspNetCore.Mvc

Public Class ExportController
    Inherits Controller

    <HttpPost>
    Public Function ExportReport() As IActionResult
        ' Create workbook and worksheet
        Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
        Dim worksheet As 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.0
        worksheet("A3").Value = "Widget B"
        worksheet("B3").Value = 230
        worksheet("C3").Value = 6900.0

        ' Apply bold formatting to headers
        Dim headerRange = worksheet("A1:C1")
        headerRange.Style.Font.Bold = True

        ' Stream file to browser
        Dim fileBytes As Byte() = workbook.ToByteArray()
        Dim filename As String = $"SalesReport_{DateTime.Now:yyyyMMdd}.xlsx"
        Return File(fileBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename)
    End Function
End Class
$vbLabelText   $csharpLabel

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");
// Export as CSV instead of XLSX
workbook.SaveAsCsv("output.csv");
$vbLabelText   $csharpLabel

ワークシートデータを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");
    }
}
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");
    }
}
Imports IronXL
Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.AspNetCore.Mvc

Public Class ReportController
    Inherits Controller

    Private ReadOnly _connectionString As String

    Public Sub New(config As IConfiguration)
        _connectionString = config.GetConnectionString("DefaultConnection")
    End Sub

    <HttpGet>
    Public Function DownloadReport() As IActionResult
        Dim table As New DataTable()

        Using connection As New SqlConnection(_connectionString)
            Dim query As String = "SELECT OrderId, CustomerName, Total, OrderDate FROM Orders"
            Using adapter As New SqlDataAdapter(query, connection)
                adapter.Fill(table)
            End Using
        End Using

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

        ' Write column headers from DataTable schema
        For col As Integer = 0 To table.Columns.Count - 1
            worksheet(0, col).Value = table.Columns(col).ColumnName
        Next

        ' Write data rows
        For row As Integer = 0 To table.Rows.Count - 1
            For col As Integer = 0 To table.Columns.Count - 1
                worksheet(row + 1, col).Value = table.Rows(row)(col).ToString()
            Next
        Next

        Dim fileBytes As Byte() = workbook.ToByteArray()
        Return File(fileBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Orders.xlsx")
    End Function
End Class
$vbLabelText   $csharpLabel

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

ClosedXMLとEPPlusの比較は?

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

Install-Package ClosedXML
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");
    }
}
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");
    }
}
Imports ClosedXML.Excel
Imports Microsoft.AspNetCore.Mvc
Imports System.IO

Public Class ExportController
    Inherits Controller

    <HttpGet>
    Public Function ExportWithClosedXML() As IActionResult
        Using workbook As New XLWorkbook()
            Dim 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 stream As New MemoryStream()
                workbook.SaveAs(stream)
                Return File(stream.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "export.xlsx")
            End Using
        End Using
    End Function
End Class
$vbLabelText   $csharpLabel

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プロジェクトの詳細な機能比較
能力 IronXL ClosedXML EPPlus
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ライセンス条項を遵守してください。

今IronXLを始めましょう。
green arrow pointer

ご注意ClosedXMLとEPPlusは、それぞれの所有者の登録商標です。 このサイトは、ClosedXML または EPPlus ソフトウェアとは提携しておらず、承認や支援を受けていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。

よくある質問

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

IronXLは、Microsoft Officeを必要とせずに、XLSX、CSV、JSON、XML形式のファイルを生成します。ブックとワークシートの管理、セルレベルのスタイル設定、数式の評価、DataTableとの統合など、直感的なAPIをすべて標準 for .NETマネージドコード内で提供します。

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

IronXLは複数のエクスポート形式(XLSX、CSV、JSON、XML)をサポートし、商用ライセンスにはプロフェッショナルサポートが含まれています。ClosedXMLはMITライセンスの下で有効なXLSXファイルを生成するため、スプレッドシート出力のみを必要とするオープンソースプロジェクトに最適です。

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

はい。IronXLはDataTable オブジェクトと ADO .NETクエリ結果を直接操作するため、SQL Server やその他のリレーショナル データベースからワークシートにデータを入力し、結果のファイルをブラウザーにストリーミングすることが簡単になります。

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

IronXLはCSV、JSON、XMLエクスポートをネイティブにサポートし、すべての商用ライセンスにプロフェッショナルサポートが付属し、非商用利用に関する制限はありません。EPPlusは、本番環境での使用には別途商用ライセンスが必要であり、ネイティブのマルチフォーマットエクスポートは提供していません。

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

IronXLはサーバーサイドのワークロード向けに設計されており、Microsoft ExcelやCOM相互運用性を必要とせずに大規模なデータセットを処理できます。非常に大きなエクスポートの場合、バイト配列をASP.NET CoreのFile()レスポンスを通じて直接ストリーミングすることで、ファイル全体をメモリにバッファリングする必要がなくなります。

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

いいえ。IronXLは完全にマネージド.NETコードで動作し、Microsoft Office、COM相互運用性、Officeオートメーションに依存しません.NETがサポートされているWindows、Linux、macOSで動作します。

Curtis Chau
テクニカルライター

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

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

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね