フッターコンテンツにスキップ
IRONXLの使用

IronXLを使用してBlazorで Excel ファイルをエクスポートする方法

Excelへのデータのエクスポートは、売上レポート、在庫リスト、顧客への請求書など、ほぼすべてのBlazor Webアプリケーションで必要となる機能です。Blazor Blazorアプリケーションでは、Microsoft Officeを必要とせずにこれを確実に実現するのは困難に思えるかもしれません。 IronXL を使用すると、Office をインストールする必要がなく、サーバーから直接 Excel ファイルを作成、フォーマット、ダウンロードできるため、操作が簡単になります。 このガイドでは、プロジェクトのセットアップやサービス設計から高度な書式設定や複数シートのレポートまで、 IronXLを使用してBlazorで本番環境対応の Excel エクスポート機能を構築する手順を説明します。

Blazor Server プロジェクトでIronXL をセットアップするにはどうすればよいですか?

エクスポート ロジックを記述する前に、 IronXL をBlazor Server プロジェクトに追加し、ブラウザー側のダウンロード ヘルパーを構成する必要があります。

Blazorサーバー プロジェクトの作成

まず、Visual Studio 2022 以降で、 .NET 10 をターゲットとする新しいBlazor Server プロジェクトを作成します。プロジェクトの準備ができたら、 NuGetパッケージ マネージャー コンソールからIronXLをインストールします。

Install-Package IronXl.Excel

IronXL は.NET 6 以降で動作するため、既存のBlazorプロジェクトではフレームワークをアップグレードせずに IronXL を採用できます。 NuGet UI や CLI などの代替インストール方法については、 IronXLインストール ガイドを参照してください。

JavaScriptダウンロードヘルパーの追加

Blazor Server はサーバー側で実行されるため、ファイルのダウンロードをトリガーするには小さなJavaScriptブリッジが必要です。 wwwroot フォルダに、excelExport.js というファイルを追加します。

window.downloadFileFromStream = async (fileName, contentStreamReference) => {
    const arrayBuffer = await contentStreamReference.arrayBuffer();
    const blob = new Blob([arrayBuffer]);
    const url = URL.createObjectURL(blob);
    const anchorElement = document.createElement('a');
    anchorElement.href = url;
    anchorElement.download = fileName ?? 'export.xlsx';
    anchorElement.click();
    anchorElement.remove();
    URL.revokeObjectURL(url);
}
window.downloadFileFromStream = async (fileName, contentStreamReference) => {
    const arrayBuffer = await contentStreamReference.arrayBuffer();
    const blob = new Blob([arrayBuffer]);
    const url = URL.createObjectURL(blob);
    const anchorElement = document.createElement('a');
    anchorElement.href = url;
    anchorElement.download = fileName ?? 'export.xlsx';
    anchorElement.click();
    anchorElement.remove();
    URL.revokeObjectURL(url);
}
JAVASCRIPT

このスクリプトを _Host.cshtml ファイル (または.NET 8 以降では App.razor) に含めます。

<script src="~/excelExport.js"></script>
<script src="~/excelExport.js"></script>
HTML

この関数は、 Blazorからのバイト ストリームを一時的な BLOB URL に変換し、ブラウザーのダウンロードをトリガーしてから、メモリ リークを防ぐために URL オブジェクトをクリーンアップします。 意図的に最小限に抑えられており、負荷の高い処理はサーバー上の C# で実行されます。

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

C# で Excel エクスポート サービスを作成するにはどうすればよいですか?

Excel 生成をRazorコンポーネントから分離することで、コードを複数のページでテストおよび再利用できるようになります。 以下のパターンは、 IronXL を専用のサービス クラス内にラップします。

ExcelExportService の構築

新しいファイルを作成します Services/ExcelExportService.cs:

using IronXL;
using System.IO;
using ExportExcel.Models;

public class ExcelExportService
{
    public byte[] GenerateSalesReport(List<SalesData> salesData)
    {
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        workbook.Metadata.Author = "Sales Department";

        var worksheet = workbook.CreateWorkSheet("Monthly Sales");

        // Add column headers
        worksheet["A1"].Value = "Date";
        worksheet["B1"].Value = "Product";
        worksheet["C1"].Value = "Quantity";
        worksheet["D1"].Value = "Revenue";
        worksheet["E1"].Value = "Profit Margin";

        // Style the header row
        var headerRange = worksheet["A1:E1"];
        headerRange.Style.Font.Bold = true;
        headerRange.Style.BackgroundColor = "#4472C4";
        headerRange.Style.Font.Color = "#FFFFFF";

        // Populate data rows
        int row = 2;
        foreach (var sale in salesData)
        {
            worksheet[$"A{row}"].Value = sale.Date.ToString("yyyy-MM-dd");
            worksheet[$"B{row}"].Value = sale.Product ?? "Unknown";
            worksheet[$"C{row}"].Value = sale.Quantity;
            worksheet[$"D{row}"].Value = sale.Revenue;
            worksheet[$"E{row}"].Value = $"=D{row}*0.15";
            row++;
        }

        worksheet.AutoSizeColumn(0, true);

        using var ms = workbook.ToStream();
        return ms.ToArray();
    }
}
using IronXL;
using System.IO;
using ExportExcel.Models;

public class ExcelExportService
{
    public byte[] GenerateSalesReport(List<SalesData> salesData)
    {
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        workbook.Metadata.Author = "Sales Department";

        var worksheet = workbook.CreateWorkSheet("Monthly Sales");

        // Add column headers
        worksheet["A1"].Value = "Date";
        worksheet["B1"].Value = "Product";
        worksheet["C1"].Value = "Quantity";
        worksheet["D1"].Value = "Revenue";
        worksheet["E1"].Value = "Profit Margin";

        // Style the header row
        var headerRange = worksheet["A1:E1"];
        headerRange.Style.Font.Bold = true;
        headerRange.Style.BackgroundColor = "#4472C4";
        headerRange.Style.Font.Color = "#FFFFFF";

        // Populate data rows
        int row = 2;
        foreach (var sale in salesData)
        {
            worksheet[$"A{row}"].Value = sale.Date.ToString("yyyy-MM-dd");
            worksheet[$"B{row}"].Value = sale.Product ?? "Unknown";
            worksheet[$"C{row}"].Value = sale.Quantity;
            worksheet[$"D{row}"].Value = sale.Revenue;
            worksheet[$"E{row}"].Value = $"=D{row}*0.15";
            row++;
        }

        worksheet.AutoSizeColumn(0, true);

        using var ms = workbook.ToStream();
        return ms.ToArray();
    }
}
$vbLabelText   $csharpLabel

サービスの登録

Program.cs の DI コンテナーにサービスを追加します。

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddScoped<ExcelExportService>();

var app = builder.Build();
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");
app.Run();
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddScoped<ExcelExportService>();

var app = builder.Build();
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");
app.Run();
$vbLabelText   $csharpLabel

このサービスは、 IronXL のいくつかの主要な機能を実証します。 1 回のメソッド呼び出しで新しいワークブックとワークシートを作成し、スタイル設定されたヘッダーを適用し、任意のデータ ソースから行を入力し、=D2*0.15 などのExcel 数式を埋め込むことができます。 AutoSizeColumn 呼び出しにより、データの長さに関係なく、列がコンテンツを正しく表示するのに十分な幅を持つことが保証されます。 詳細な書式設定オプションについては、セル スタイル ガイドを参照してください。

Blazorコンポーネントから Excel のダウンロードをトリガーするにはどうすればよいですか?

サービスが配置されたら、それを呼び出して結果のバイトをブラウザーに渡すRazorコンポーネントが必要になります。

Razorコンポーネントの作成

Pages/ExcelExportDashboard.razor にページを作成します:

@page "/excel-export"
@using ExportExcel.Models
@inject ExcelExportService ExcelService
@inject IJSRuntime JS

<h3>Excel Export Dashboard</h3>

<div class="export-section">
    <button class="btn btn-primary" @onclick="ExportSalesReport" disabled="@isExporting">
        @if (isExporting)
        {
            <span>Generating...</span>
        }
        else
        {
            <span>Export Sales Report</span>
        }
    </button>

    @if (!string.IsNullOrEmpty(errorMessage))
    {
        <div class="alert alert-danger mt-2">@errorMessage</div>
    }
</div>

@code {
    private bool isExporting = false;
    private string errorMessage = "";

    private async Task ExportSalesReport()
    {
        try
        {
            isExporting = true;
            errorMessage = "";

            var salesData = GetSalesData();
            var fileBytes = ExcelService.GenerateSalesReport(salesData);

            using var stream = new MemoryStream(fileBytes);
            using var streamRef = new DotNetStreamReference(stream);
            await JS.InvokeVoidAsync(
                "downloadFileFromStream",
                $"SalesReport_{DateTime.Now:yyyyMMdd}.xlsx",
                streamRef
            );
        }
        catch (Exception)
        {
            errorMessage = "Export failed. Please try again.";
        }
        finally
        {
            isExporting = false;
        }
    }

    private List<SalesData> GetSalesData()
    {
        return new List<SalesData>
        {
            new() { Date = DateTime.Now, Product = "Widget A", Quantity = 100, Revenue = 5000 },
            new() { Date = DateTime.Now.AddDays(-1), Product = "Widget B", Quantity = 75, Revenue = 3750 }
        };
    }
}
@page "/excel-export"
@using ExportExcel.Models
@inject ExcelExportService ExcelService
@inject IJSRuntime JS

<h3>Excel Export Dashboard</h3>

<div class="export-section">
    <button class="btn btn-primary" @onclick="ExportSalesReport" disabled="@isExporting">
        @if (isExporting)
        {
            <span>Generating...</span>
        }
        else
        {
            <span>Export Sales Report</span>
        }
    </button>

    @if (!string.IsNullOrEmpty(errorMessage))
    {
        <div class="alert alert-danger mt-2">@errorMessage</div>
    }
</div>

@code {
    private bool isExporting = false;
    private string errorMessage = "";

    private async Task ExportSalesReport()
    {
        try
        {
            isExporting = true;
            errorMessage = "";

            var salesData = GetSalesData();
            var fileBytes = ExcelService.GenerateSalesReport(salesData);

            using var stream = new MemoryStream(fileBytes);
            using var streamRef = new DotNetStreamReference(stream);
            await JS.InvokeVoidAsync(
                "downloadFileFromStream",
                $"SalesReport_{DateTime.Now:yyyyMMdd}.xlsx",
                streamRef
            );
        }
        catch (Exception)
        {
            errorMessage = "Export failed. Please try again.";
        }
        finally
        {
            isExporting = false;
        }
    }

    private List<SalesData> GetSalesData()
    {
        return new List<SalesData>
        {
            new() { Date = DateTime.Now, Product = "Widget A", Quantity = 100, Revenue = 5000 },
            new() { Date = DateTime.Now.AddDays(-1), Product = "Widget B", Quantity = 75, Revenue = 3750 }
        };
    }
}
$vbLabelText   $csharpLabel

コンポーネントの機能

isExporting フラグは生成中にボタンを無効にし、重複した要求を防ぎます。 DotNetStreamReference ラッパーは、 .NETメモリストリームからJavaScript関数へのバイナリストリーミングを効率的に処理します。これにより、ペイロードサイズを増大させる大きな base64 文字列を回避できます。SalesReport_20260228.xlsx のようなタイムスタンプ付きファイル名により、追加設定なしでダウンロードを整理できます。

ブラウザで /excel-export に移動すると、エクスポート ボタンを含むダッシュボード ページが読み込まれます。

 BlazorExcel へのエクスポート: C# でのIronXLの使用に関する完全ガイド: 画像 1 - サンプルBlazorページ

ボタンをクリックするとスプレッドシートが生成され、ブラウザが自動的にファイルをダウンロードします。

 BlazorExcel へのエクスポート: C# でのIronXLの使用に関する完全ガイド: 画像 2 - Excel ファイルにエクスポートされたデータ

Excel エクスポートにどのような高度な書式設定を適用できますか?

基本的なデータのエクスポートは多くのユースケースに対応しますが、実稼働アプリケーションでは条件付き書式、複数のワークシート、またはデータ検証が必要になることがよくあります。 IronXL はこれらすべてをネイティブにサポートします。

在庫レポートの条件付き書式

次のサービスは、在庫の少ない商品を赤で強調表示します。これは、倉庫または在庫管理アプリケーションに共通する要件です。

using IronXL;
using ExportExcel.Models;
using System.IO;

public class InventoryExportService
{
    public byte[] GenerateInventoryReport(List<InventoryItem> items)
    {
        var workbook = WorkBook.Create();
        var details = workbook.CreateWorkSheet("Inventory Details");

        // Column headers
        details["A1"].Value = "SKU";
        details["B1"].Value = "Name";
        details["C1"].Value = "Quantity";
        details["D1"].Value = "Reorder Level";
        details["E1"].Value = "Status";

        var headerRange = details["A1:E1"];
        headerRange.Style.Font.Bold = true;
        headerRange.Style.BackgroundColor = "#2E75B6";
        headerRange.Style.Font.Color = "#FFFFFF";

        for (int i = 0; i < items.Count; i++)
        {
            int row = i + 2;
            var item = items[i];

            details[$"A{row}"].Value = item.SKU;
            details[$"B{row}"].Value = item.Name;
            details[$"C{row}"].Value = item.Quantity;
            details[$"D{row}"].Value = item.ReorderLevel;
            details[$"E{row}"].Value = item.Quantity < item.ReorderLevel
                ? "Reorder Required"
                : "OK";

            if (item.Quantity < item.ReorderLevel)
            {
                // Highlight the entire row for low-stock items
                details[$"A{row}:E{row}"].Style.BackgroundColor = "#FFB6B6";
                details[$"C{row}"].Style.Font.Bold = true;
            }
        }

        details.AutoSizeColumn(0, true);
        details.AutoSizeColumn(1, true);

        using var stream = workbook.ToStream();
        return stream.ToArray();
    }
}
using IronXL;
using ExportExcel.Models;
using System.IO;

public class InventoryExportService
{
    public byte[] GenerateInventoryReport(List<InventoryItem> items)
    {
        var workbook = WorkBook.Create();
        var details = workbook.CreateWorkSheet("Inventory Details");

        // Column headers
        details["A1"].Value = "SKU";
        details["B1"].Value = "Name";
        details["C1"].Value = "Quantity";
        details["D1"].Value = "Reorder Level";
        details["E1"].Value = "Status";

        var headerRange = details["A1:E1"];
        headerRange.Style.Font.Bold = true;
        headerRange.Style.BackgroundColor = "#2E75B6";
        headerRange.Style.Font.Color = "#FFFFFF";

        for (int i = 0; i < items.Count; i++)
        {
            int row = i + 2;
            var item = items[i];

            details[$"A{row}"].Value = item.SKU;
            details[$"B{row}"].Value = item.Name;
            details[$"C{row}"].Value = item.Quantity;
            details[$"D{row}"].Value = item.ReorderLevel;
            details[$"E{row}"].Value = item.Quantity < item.ReorderLevel
                ? "Reorder Required"
                : "OK";

            if (item.Quantity < item.ReorderLevel)
            {
                // Highlight the entire row for low-stock items
                details[$"A{row}:E{row}"].Style.BackgroundColor = "#FFB6B6";
                details[$"C{row}"].Style.Font.Bold = true;
            }
        }

        details.AutoSizeColumn(0, true);
        details.AutoSizeColumn(1, true);

        using var stream = workbook.ToStream();
        return stream.ToArray();
    }
}
$vbLabelText   $csharpLabel

IronXLは、データ生成時の値に基づいてセルレベルの書式設定を適用します。また、条件付き書式ルールを宣言的に適用したり、同じワークブック内で複数のワークシートを管理したりすることも可能です(例えば、現在の在庫用シートと過去の注文用シートを別々に管理するなど)。

複数のワークシートを単一のエクスポートに追加する

データを論理シートに分割すると、個別のダウンロードを必要とせずに読みやすさが向上します。

public byte[] GenerateMultiSheetReport(
    List<SalesData> sales,
    List<InventoryItem> inventory)
{
    var workbook = WorkBook.Create(ExcelFileFormat.XLSX);

    // Sheet 1 -- Sales summary
    var salesSheet = workbook.CreateWorkSheet("Sales");
    salesSheet["A1"].Value = "Date";
    salesSheet["B1"].Value = "Revenue";
    salesSheet["A1:B1"].Style.Font.Bold = true;

    for (int i = 0; i < sales.Count; i++)
    {
        salesSheet[$"A{i + 2}"].Value = sales[i].Date.ToString("yyyy-MM-dd");
        salesSheet[$"B{i + 2}"].Value = sales[i].Revenue;
    }

    // Sheet 2 -- Inventory snapshot
    var invSheet = workbook.CreateWorkSheet("Inventory");
    invSheet["A1"].Value = "SKU";
    invSheet["B1"].Value = "Name";
    invSheet["C1"].Value = "Quantity";
    invSheet["A1:C1"].Style.Font.Bold = true;

    for (int i = 0; i < inventory.Count; i++)
    {
        invSheet[$"A{i + 2}"].Value = inventory[i].SKU;
        invSheet[$"B{i + 2}"].Value = inventory[i].Name;
        invSheet[$"C{i + 2}"].Value = inventory[i].Quantity;
    }

    using var stream = workbook.ToStream();
    return stream.ToArray();
}
public byte[] GenerateMultiSheetReport(
    List<SalesData> sales,
    List<InventoryItem> inventory)
{
    var workbook = WorkBook.Create(ExcelFileFormat.XLSX);

    // Sheet 1 -- Sales summary
    var salesSheet = workbook.CreateWorkSheet("Sales");
    salesSheet["A1"].Value = "Date";
    salesSheet["B1"].Value = "Revenue";
    salesSheet["A1:B1"].Style.Font.Bold = true;

    for (int i = 0; i < sales.Count; i++)
    {
        salesSheet[$"A{i + 2}"].Value = sales[i].Date.ToString("yyyy-MM-dd");
        salesSheet[$"B{i + 2}"].Value = sales[i].Revenue;
    }

    // Sheet 2 -- Inventory snapshot
    var invSheet = workbook.CreateWorkSheet("Inventory");
    invSheet["A1"].Value = "SKU";
    invSheet["B1"].Value = "Name";
    invSheet["C1"].Value = "Quantity";
    invSheet["A1:C1"].Style.Font.Bold = true;

    for (int i = 0; i < inventory.Count; i++)
    {
        invSheet[$"A{i + 2}"].Value = inventory[i].SKU;
        invSheet[$"B{i + 2}"].Value = inventory[i].Name;
        invSheet[$"C{i + 2}"].Value = inventory[i].Quantity;
    }

    using var stream = workbook.ToStream();
    return stream.ToArray();
}
$vbLabelText   $csharpLabel

ワークブックのプロパティ、範囲操作、グラフのサポートを含む完全な API リファレンスについては、 IronXL API ドキュメントをご覧ください。

 Blazor による Excel へのエクスポート: C# でのIronXLの使用に関する完全ガイド: 画像 3 - 高度な機能の出力例

エラーや大規模なデータセットを効率的に処理するにはどうすればよいでしょうか?

データセットが大きい場合、Excel のエクスポート操作は、警告なく失敗したり、パフォーマンスが低下したりすることがあります。 以下のパターンは両方の懸念に対処します。

サービス層でのエラー処理

生成ロジックをコンポーネントではなくサービスにラップすると、すべての呼び出し元間でエラー処理の一貫性が保たれます。 推奨されるパターンは、 IronXL例外を伝播させてから、どのレポートが失敗したかのコンテキストを含むドメイン固有の例外でそれらをラップすることです。

GenerateSalesReport のワークブック生成の周囲に try/catch ブロックを配置し、Exception をキャッチして、InvalidOperationException("Failed to generate sales report", ex) として再スローします。 Blazorコンポーネントで、InvalidOperationException をキャッチし、内部の詳細を公開せずにユーザーフレンドリーなメッセージを表示します。 サービス コンストラクターに挿入された ILogger<t> を使用して内部例外をログに記録し、開発チームが特定のワークブック操作の失敗を追跡できるようにします。 生の例外メッセージをエンド ユーザーに公開しないでください。ファイル パス、メモリ アドレス、またはスタック トレースによってサーバーの内部が明らかになる可能性があります。

Blazorでの構造化エラー ログに関するガイダンスについては、Microsoft 公式ドキュメントのエラー処理のベスト プラクティスを参照してください。 .NETでテスト可能なサービスを構築するための詳細なガイダンスについては、 Microsoft の依存関係挿入のドキュメントで、スコープ指定されたサービスを登録および解決する方法が説明されています。これは、ここで ExcelExportService で使用されているパターンとまったく同じです。

大規模データセットのパフォーマンスに関する考慮事項

数千行を超えるデータセットの場合は、次のアプローチを検討してください。

Excelエクスポートのパフォーマンス戦略
戦略 いつ使うか IronXLサポート
レスポンスに直接ストリーム Files >10 MB `workbook.ToStream()`
エクスポート前にデータをページ分けする フィルター付きのUI駆動型エクスポート ワークブックを作成する前にサービスに適用する
バックグラウンドジョブ + ダウンロードリンク Reports taking >5 seconds SignalRまたはポーリングと組み合わせる
大きなシートで AutoSizeColumn を無効にする Sheets with >500 rows 代わりに固定列幅を設定する

IronXL の ToStream() メソッドは、最初にファイル全体をバイト配列にロードせずに出力ストリームに直接書き込むため、大きなワークブックのメモリ使用量が低く抑えられます。 追加のパフォーマンス ガイダンスについては、 "IronXLを使用した大規模な Excel ファイルの読み取りと書き込み"を参照してください。

IronXL は他にどのような Excel 機能をサポートしていますか?

IronXL は、基本的なエクスポートだけでなく、実際のレポート要件をカバーする幅広い Excel 機能を提供します。

数式、名前付き範囲、数値の書式設定

セルに直接入力するのと同じ構文を使用して、任意の Excel 数式を埋め込むことができます。 IronXL は読み取り時に数式を評価するため、生成されたファイルのユーザーはスプレッドシートを開くとすぐに計算結果を確認できます。 名前付き範囲を使用すると、時間の経過とともに数式が読みやすくなり、保守しやすくなります。

// Aggregate formulas on a summary row
worksheet["E2"].Value = "=SUM(D2:D100)";
worksheet["F2"].Value = "=AVERAGE(C2:C100)";
worksheet["G2"].Value = "=COUNTIF(B2:B100,\"Widget A\")";

// Named ranges improve formula readability
worksheet["D2:D100"].Name = "RevenueColumn";
worksheet["E2"].Value = "=SUM(RevenueColumn)";

// Number and date formatting prevents type misinterpretation
worksheet["D2"].Value = 12345.67m;
worksheet["D2"].FormatString = "#,##0.00";
worksheet["A2"].Value = DateTime.Now;
worksheet["A2"].FormatString = "dd/MM/yyyy";
// Aggregate formulas on a summary row
worksheet["E2"].Value = "=SUM(D2:D100)";
worksheet["F2"].Value = "=AVERAGE(C2:C100)";
worksheet["G2"].Value = "=COUNTIF(B2:B100,\"Widget A\")";

// Named ranges improve formula readability
worksheet["D2:D100"].Name = "RevenueColumn";
worksheet["E2"].Value = "=SUM(RevenueColumn)";

// Number and date formatting prevents type misinterpretation
worksheet["D2"].Value = 12345.67m;
worksheet["D2"].FormatString = "#,##0.00";
worksheet["A2"].Value = DateTime.Now;
worksheet["A2"].FormatString = "dd/MM/yyyy";
$vbLabelText   $csharpLabel

名前付き範囲を定義し数値形式を明示的に設定するために、 IronXL は両方を範囲オブジェクトのプロパティとして公開します。 これにより、Excel が通貨の値をプレーンテキストとして扱うことがなくなります。これは、値を文字列として保存するデータベースから財務データをエクスポートする場合によく発生する問題です。

サポートされているExcelファイル形式

IronXL は、.tsv を含む複数の Excel 形式を読み書きできます。 形式は保存時に決定されるため、同じサービス クラスで、わずかなパラメータの変更だけで Excel と CSV の両方のエクスポートをサポートできます。

// Export as CSV for systems that consume flat files
workbook.SaveAs("report.csv");

// Or stream as CSV for download
using var ms = workbook.ToStream(ExcelFileFormat.CSV);
// Export as CSV for systems that consume flat files
workbook.SaveAs("report.csv");

// Or stream as CSV for download
using var ms = workbook.ToStream(ExcelFileFormat.CSV);
$vbLabelText   $csharpLabel

この柔軟性は、ERP プラットフォームやデータ ウェアハウスなどの下流のシステムが特定のファイル形式を期待する統合において重要になります。 IronXLと他の Excel ライブラリの完全な機能比較については、 IronXL機能ページをご覧ください。

予期しない出力をデバッグするときに .xlsx ファイルの内部構造を理解する必要がある場合は、Microsoft がOOXML ファイル形式を理解するための優れたリファレンスを提供しています。 IronXLのNuGetパッケージも、完全なバージョン履歴と互換性に関する注意事項とともにNuGet.org に掲載されています。

BlazorプロジェクトでIronXLを使い始めるにはどうすればよいでしょうか?

IronXL は、時間制限なしでビルドおよびテストできる無料の開発ライセンスで利用できます。 実稼働アプリケーションの場合、デプロイメント ライセンスが必要です。

NuGetから直接無料トライアルをダウンロードできます。開始するには登録は必要ありません。 展開の準備ができたら、 IronXL のライセンス オプションを確認し、アプリケーションの規模に適したプランを見つけます。

IronXLは、 Blazor Server、 Blazor WebAssembly(サーバーレンダリング)、 ASP.NET Core MVC、コンソールアプリケーション、Windowsデスクトップアプリなど、主要な.NETアプリケーションの種類すべてで動作します。このライブラリは.NET Standard 2.0をターゲットとしているため、 .NET Framework 4.6.2から.NET 10まで、サポートされているすべて for .NETバージョンと互換性があります。プロジェクトでPDF生成も必要な場合、 IronPDFはIronXLと競合することなく統合されるため、同じサービスレイヤーからExcelまたはPDFとしてデータをエクスポートできます。

Blazor 固有の例をさらに調べるには、 Blazor Excel エクスポート チュートリアルASP.NET Coreエクスポート ガイドを参照してください。 既存のスプレッドシートを読み取る場合、 C# Excel リーダー チュートリアルでは一般的なインポート シナリオについて説明します。 テンプレートからではなくプログラムによってファイルを作成する必要があるプロジェクトでは、新しい Excel ブックを最初から作成する方法を確認することもできます。

よくある質問

Blazor Server アプリでデータを Excel にエクスポートするにはどうすればよいですか?

IronXLを使用すると、 Blazor ServerアプリでデータをExcelにエクスポートできます。IronXLを使用すると、Microsoft Officeを必要とせずに、サーバーから直接Excelファイルを作成、フォーマット、ダウンロードできます。

BlazorでIronXLを使用するにはMicrosoft Officeがインストールされている必要がありますか?

いいえ、Microsoft Office をインストールする必要はありません。IronXLを使用すると、 Blazor Server アプリで Microsoft Office に依存せずに Excel ファイルを処理できます。

BlazorアプリケーションでIronXLを使用して Excel ファイルをフォーマットできますか?

はい、 IronXL には Excel ファイルをフォーマットするためのツールが用意されており、 Blazor Server アプリから直接データの外観をカスタマイズできます。

IronXL はBlazor Server アプリケーションと互換性がありますか?

はい、 IronXL はBlazor Server アプリケーションとシームレスに統合され、Excel ファイルの簡単なエクスポートと処理が可能になります。

BlazorでのExcelエクスポートにIronXLを使用する利点は何ですか?

IronXL は、Office を必要とせずに Excel ファイルを簡単に作成および操作する方法を提供するため、 Blazorアプリでデータをエクスポートするための効率的なソリューションとなります。

IronXL はBlazor Server アプリで大きな Excel ファイルを処理できますか?

はい、 IronXLはBlazor Server アプリケーション内で大きな Excel ファイルを効率的に処理するように設計されています。

BlazorアプリでIronXLを使用して作成できる Excel ファイルの種類は何ですか?

IronXL を使用すると、XLSX、XLS、CSV などのさまざまな種類の Excel ファイルをBlazorアプリケーション内で直接作成できます。

IronXLを使用してBlazor Server アプリから Excel ファイルをダウンロードすることは可能ですか?

はい、 IronXL はBlazor Server アプリから Excel ファイルを直接ダウンロードすることをサポートしており、エンドユーザーにシームレスなエクスペリエンスを提供します。

IronXL は他のソリューションと比較して、 Blazorの Excel エクスポート機能をどのように改善しますか?

IronXL は、Microsoft Office を必要とせず、サーバー アプリケーションと直接統合することで、 Blazorで Excel ファイルをエクスポートするプロセスを簡素化します。

Blazor開発者にとってIronXL が最適な選択肢となる理由は何ですか?

IronXL は、強力な Excel 処理機能を備え、Office のインストールを必要とせず、 Blazor Server アプリに簡単に統合できるため、 Blazor開発者にとって最適な選択肢です。

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

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

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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me