Blazor Export to Excel:C#でIronXLを使用した完全ガイド
Excelにデータをエクスポートすることは、レポートの作成、在庫リストの作成、顧客の請求書の作成など、ほぼすべてのWebアプリが必要とするものです。 Blazor Serverアプリケーションでは、Microsoft Officeを必要とせずにこれを確実に達成することが難しい場合があります。 そこでIronXLの出番です。 サーバーから直接Excelファイルを作成、フォーマット、ダウンロードでき、Officeのインストールが不要で、Blazorとシームレスに統合されます。 このガイドでは、アプリにプロフェッショナルなExcelエクスポート機能を追加するのがいかに簡単かを見ていきます。さあ、始めましょう。
ExcelへのデータエクスポートのためのIronXLの始め方
Blazor ServerアプリケーションでIronXLを設定するには、最小限の設定が必要です。 まず、Visual Studio 2022以降で新しいBlazor Serverプロジェクトを作成し、.NET 6以上をターゲットにします。
NuGetパッケージマネージャーコンソールを通じてIronXLをインストールします(代替方法については完全なインストールガイドを参照してください):
Install-Package IronXLInstall-Package IronXL次に、ファイルダウンロード用のJavaScriptヘルパー関数を作成します。 wwwrootフォルダに、excelExport.jsという新しいJavaScriptファイルを追加してください:
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);
}このスクリプトを_Host.cshtmlファイルにインクルードしてください:
<script src="~/excelExport.js"></script><script src="~/excelExport.js"></script>このJavaScript関数は、Blazor Serverアプリケーションからのバイトストリームをダウンロード可能なファイルに変換し、ブラウザ側のダウンロードメカニズムを処理します。関数は一時的なblob URLを作成し、ダウンロードをトリガーし、メモリリークを防ぐためにリソースをクリーンアップします。
IronXLでデータソースをExcelファイルにエクスポートする方法は?
ビジネスロジックを処理するためにExcelエクスポートサービスを作成します。 このサービスは、IronXL機能をカプセル化し、BlazorのExcelエクスポート実装におけるさまざまなエクスポートシナリオに再利用可能なメソッドを提供します:
using IronXL;
using System.IO;
using ExportExcel.Models;
public class ExcelExportService
{
public byte[] GenerateSalesReport(List<SalesData> salesData)
{
try
{
var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
workbook.Metadata.Author = "Sales Department";
var worksheet = workbook.CreateWorkSheet("Monthly Sales");
worksheet["A1"].Value = "Date";
worksheet["B1"].Value = "Product";
worksheet["C1"].Value = "Quantity";
worksheet["D1"].Value = "Revenue";
worksheet["E1"].Value = "Profit Margin";
var headerRange = worksheet["A1:E1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";
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();
}
catch (Exception ex)
{
throw new InvalidOperationException("Failed to generate sales report", ex);
}
}
}using IronXL;
using System.IO;
using ExportExcel.Models;
public class ExcelExportService
{
public byte[] GenerateSalesReport(List<SalesData> salesData)
{
try
{
var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
workbook.Metadata.Author = "Sales Department";
var worksheet = workbook.CreateWorkSheet("Monthly Sales");
worksheet["A1"].Value = "Date";
worksheet["B1"].Value = "Product";
worksheet["C1"].Value = "Quantity";
worksheet["D1"].Value = "Revenue";
worksheet["E1"].Value = "Profit Margin";
var headerRange = worksheet["A1:E1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";
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();
}
catch (Exception ex)
{
throw new InvalidOperationException("Failed to generate sales report", ex);
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comこのサービスは、新しいワークブックとワークシートの作成、フォーマットされたヘッダーの追加、データソースからのインポートデータでデータ行を埋めること、数式の適用、および潜在的なエラーの処理を含む、IronXLの主要機能を示します。 AutoSizeColumnメソッドは、コンテンツの長さに関係なく、列が適切に表示されるようにします。 より高度なフォーマットオプションについては、セルスタイリングガイドをご覧ください。
Blazorでファイルダウンロードを実装する方法は?
エクスポートサービスを使用し、ユーザーとの対話を処理する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 ex)
{
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 }
};
}
}このコンポーネントは、エクスポート中にユーザーにフィードバックを提供し、エラーを優雅に処理し、タイムスタンプ付きのファイル名を生成します。 DotNetStreamReferenceラッパーは、JavaScriptへのバイナリデータの効率的なストリーミングを可能にします。
出力
コードを実行すると、エクスポート処理を行うためのボタンでページが読み込まれるのがわかります。
Blazor Export to Excel:C#でIronXLを使った完全ガイド:画像1 - Blazorのサンプルページ。
ボタンをクリックすると、新しいExcelドキュメントにデータが保存され、エクスポートされたファイルがダウンロードされます。
Blazor Export to Excel:C#でIronXLを使った完全ガイド:画像2-Excelファイルにエクスポートされたデータ
IronXLはExcelエクスポートにどのような高度な機能を追加できますか?
IronXLは、プロフェッショナルな外観のエクスポートのための高度なExcel機能をサポートしています。 在庫管理シナリオでは、条件付き書式設定や複数のワークシートを追加することができます:
using IronXL;
using ExportExcel.Models;
using System.IO;
namespace ExportExcel.Services
{
public class InventoryExportService
{
public byte[] GenerateInventoryReport(List<InventoryItem> items)
{
var workbook = WorkBook.Create();
var details = workbook.CreateWorkSheet("Inventory Details");
details["A1"].Value = "SKU";
details["B1"].Value = "Name";
details["C1"].Value = "Quantity";
var headerRange = details["A1:C1"];
headerRange.Style.Font.Bold = true;
for (int i = 0; i < items.Count; i++)
{
var 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;
if (item.Quantity < item.ReorderLevel)
{
details[$"C{row}"].Style.BackgroundColor = "#FFB6B6";
}
}
using var stream = workbook.ToStream();
return stream.ToArray();
}
}
}using IronXL;
using ExportExcel.Models;
using System.IO;
namespace ExportExcel.Services
{
public class InventoryExportService
{
public byte[] GenerateInventoryReport(List<InventoryItem> items)
{
var workbook = WorkBook.Create();
var details = workbook.CreateWorkSheet("Inventory Details");
details["A1"].Value = "SKU";
details["B1"].Value = "Name";
details["C1"].Value = "Quantity";
var headerRange = details["A1:C1"];
headerRange.Style.Font.Bold = true;
for (int i = 0; i < items.Count; i++)
{
var 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;
if (item.Quantity < item.ReorderLevel)
{
details[$"C{row}"].Style.BackgroundColor = "#FFB6B6";
}
}
using var stream = workbook.ToStream();
return stream.ToArray();
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronXLは複数のワークシートを容易に処理し、ビジネスルールに基づいた条件付きフォーマットを適用し、必要に応じてピボットテーブルやチャートなどの高度なExcel機能をサポートします。 詳細なAPIドキュメントについては、包括的なリファレンスガイドをご覧ください。
結論
IronXLは、Blazor ServerアプリケーションでのExcelファイル生成を、複雑な課題から単純なタスクに変えます。 その直感的なAPIは、Microsoft Officeのインストールの必要性を排除し、高度なExcel機能へのアクセスを提供します。 シンプルなデータエクスポートから数式やフォーマットを含む複雑なマルチシートレポートまで、IronXLは優れたパフォーマンスと信頼性でそれらをすべて処理します。
プロフェッショナルなExcelエクスポート機能でBlazorアプリケーションを強化する準備はできましたか? 今すぐIronXLの無料トライアルを開始するか、ライセンスオプションをご検討ください。
よくある質問
Blazor ServerアプリでExcelファイルをエクスポートするには?
IronXLを使ってBlazor ServerアプリでExcelファイルをエクスポートすることができます。Microsoft Officeを必要とせず、サーバーから直接XLSXファイルを作成、フォーマット、ダウンロードすることができます。
BlazorでIronXLを使用するにはMicrosoft Officeがインストールされている必要がありますか?
IronXLはBlazorアプリケーションでExcelファイルを作成、フォーマット、エクスポートするためにMicrosoft Officeをサーバーにインストールする必要はありません。
IronXLはBlazorアプリケーションと統合できますか?
IronXLはBlazorアプリケーションとシームレスに統合され、Excelエクスポート機能を簡単に追加することができます。
ウェブアプリでExcelファイルをエクスポートする一般的な用途は何ですか?
一般的な用途としては、レポートの作成、在庫リストの作成、Excel形式での顧客請求書の作成などがあります。
IronXLを使ってExcelファイルをエクスポートするコード例はありますか?
はい、このガイドではIronXLを使ってBlazor ServerアプリにExcelエクスポート機能を実装するためのコード例を提供しています。
IronXL を使って Blazor で Excel ファイルをフォーマットできますか?
IronXLはBlazorアプリケーション内で直接、スタイルの設定や数式の追加など、Excelファイルをフォーマットすることができます。
IronXLではどのような種類のExcelファイルを作成できますか?
IronXLを使用してXLSXファイルを作成することができます。IronXLは、ほとんどの表計算アプリケーションと互換性のある、広く使用されているExcelファイル形式です。






