IRONXLの使用 BlazorでIronXLを使用してExcelにエクスポートする方法 Curtis Chau 公開日:10月 19, 2025 Download IronXL NuGet Download テキストの検索と置換 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article 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 IronXL.Excel 次に、ファイルダウンロード用のJavaScriptヘルパー関数を作成します。 wwwrootフォルダーに、新しいJavaScriptファイル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ファイルにこのスクリプトを含めます: <script src="~/excelExport.js"></script> <script src="~/excelExport.js"></script> HTML この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) { // If the program fails to return file 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) { // If the program fails to return file throw new InvalidOperationException("Failed to generate sales report", ex); } } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel This service demonstrates key IronXL features, including creating new workbooks and worksheets, adding formatted headers, populating data rows with imported data from your data source, applying formulas, and handling potential errors. 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 = ""; // Generate sample data - replace with actual data source var salesData = GetSalesData(); // Generate Excel file var fileBytes = ExcelService.GenerateSalesReport(salesData); // Trigger download using a memory stream to handle the file 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."; // Log exception details for debugging } finally { isExporting = false; } } private List<SalesData> GetSalesData() { // Return your actual data here 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 = ""; // Generate sample data - replace with actual data source var salesData = GetSalesData(); // Generate Excel file var fileBytes = ExcelService.GenerateSalesReport(salesData); // Trigger download using a memory stream to handle the file 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."; // Log exception details for debugging } finally { isExporting = false; } } private List<SalesData> GetSalesData() { // Return your actual data here 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 } }; } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel このコンポーネントは、エクスポート中にユーザーにフィードバックを提供し、エラーを優雅に処理し、タイムスタンプ付きのファイル名を生成します。 DotNetStreamReferenceラッパーは、JavaScriptへのバイナリデータの効率的なストリーミングを可能にします。 出力 コードを実行すると、エクスポート処理を行うためのボタンでページが読み込まれるのがわかります。 ボタンをクリックすると、新しいExcelドキュメントにデータが保存され、エクスポートされたファイルがダウンロードされます。 IronXLはExcelエクスポートにどのような高度な機能を追加できますか? IronXLは、プロフェッショナルな外観のエクスポートのための高度なExcel機能をサポートしています。 For an inventory management scenario, you might add conditional formatting and multiple worksheets: 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"); // Add headers details["A1"].Value = "SKU"; details["B1"].Value = "Name"; details["C1"].Value = "Quantity"; // Apply bold font for headers var headerRange = details["A1:C1"]; headerRange.Style.Font.Bold = true; for (int i = 0; i < items.Count; i++) { var row = i + 2; // start from row 2 var item = items[i]; details[$"A{row}"].Value = item.SKU; details[$"B{row}"].Value = item.Name; details[$"C{row}"].Value = item.Quantity; // Highlight low stock items 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"); // Add headers details["A1"].Value = "SKU"; details["B1"].Value = "Name"; details["C1"].Value = "Quantity"; // Apply bold font for headers var headerRange = details["A1:C1"]; headerRange.Style.Font.Bold = true; for (int i = 0; i < items.Count; i++) { var row = i + 2; // start from row 2 var item = items[i]; details[$"A{row}"].Value = item.SKU; details[$"B{row}"].Value = item.Name; details[$"C{row}"].Value = item.Quantity; // Highlight low stock items 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.com $vbLabelText $csharpLabel IronXLは複数のワークシートを容易に処理し、ビジネスルールに基づいた条件付きフォーマットを適用し、必要に応じてピボットテーブルやチャートなどの高度なExcel機能をサポートします。 詳細なAPIドキュメントについては、包括的なリファレンスガイドをご覧ください。 結論 IronXLは、Blazor ServerアプリケーションでのExcelファイル生成を、複雑な課題から単純なタスクに変えます。 その直感的なAPIは、Microsoft Officeのインストールの必要性を排除し、高度なExcel機能へのアクセスを提供します。 シンプルなデータエクスポートから数式やフォーマットを含む複雑なマルチシートレポートまで、IronXLは優れたパフォーマンスと信頼性でそれらをすべて処理します。 プロフェッショナルなExcelエクスポート機能でBlazorアプリケーションを強化する準備はできましたか? 本番展開のための無料トライアルを開始しましょう。 よくある質問 Blazor ServerアプリでExcelファイルをエクスポートするにはどうすればよいですか? IronXLを使用すると、Microsoft Officeを必要とせずにサーバーから直接Excelファイルを作成、フォーマット、ダウンロードすることができます。 BlazorでExcelファイルを操作するのにMicrosoft Officeは必要ですか? いいえ、IronXLはMicrosoft Officeを必要とせずにExcelファイルを操作することができます。それは、あなたのBlazorアプリケーション内で直接Excelファイルを作成し操作する機能を提供します。 BlazorでのExcelエクスポートにIronXLを使用する利点は何ですか? IronXLはBlazorとシームレスに統合されており、Excelファイルの作成、フォーマット、エクスポートを容易にします。プロセスを簡略化し、Microsoft Officeの必要性を排除し、さまざまなExcel形式をサポートします。 IronXLは他のBlazorコンポーネントと統合できますか? はい、IronXLはBlazorコンポーネントとシームレスに統合でき、簡単にアプリケーションにExcelエクスポート機能を追加できます。 BlazorでIronXLを使用してExcelファイルをフォーマットすることは可能ですか? はい、IronXLはExcelファイルのフォーマットに豊富な機能を提供します。 BlazorでのExcelエクスポートで大規模なデータセットをどのように処理しますか? IronXLは大規模データセットを効率的に処理するように設計されており、Blazor Server環境での広範なデータのエクスポート時にスムーズなパフォーマンスを保証します。 IronXLがサポートするExcelファイル形式は何ですか? IronXLは、BlazorアプリケーションでのExcelデータのエクスポートおよび操作に柔軟性を持たせるために、XLS、XLSX、およびCSVを含むさまざまなExcelファイル形式をサポートしています。 IronXLはBlazorでのレポート生成に使用できますか? もちろん、IronXLはBlazorアプリで詳細なレポート生成に最適です。 IronXLはExcelファイルをエクスポートする際にどのようにデータの整合性を保証しますか? IronXLは、データの構造とフォーマットを正確に保持してデータの整合性を保証し、Blazorアプリケーションにとって信頼できるソリューションとなります。 IronXLを使用してBlazor ServerアプリでExcelファイルの作成を自動化する方法はありますか? はい、IronXLを使用してBlazor ServerアプリでExcelファイルの作成とエクスポートを自動化することができ、ワークフローを合理化し効率を向上させます。 Curtis Chau 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 公開日 10月 27, 2025 C#でExcelピボットテーブルを作成する方法 この明確なステップバイステップガイドを使用して、C# InteropとIronXLを使用してExcelでピボットテーブルを作成する方法を学びましょう。 詳しく読む 公開日 10月 27, 2025 C#で列ヘッダー付きのDataGridViewをExcelにエクスポートする方法 IronXLライブラリを使用したステップバイステップのC#チュートリアルで、列ヘッダーを保持しながらDataGridViewデータをExcelにエクスポートする方法を学びましょう。 詳しく読む 公開日 10月 27, 2025 .NET Core CSVリーダーとしてのIronXLの使用方法 実用的な例とともにIronXLを.NET Core CSVリーダーとして効果的に使用する方法を学びましょう。 詳しく読む C#でExcelファイルを作成する方法: InteropとIronXLの比較C#でIronXLを使用してExcelフ...
公開日 10月 27, 2025 C#でExcelピボットテーブルを作成する方法 この明確なステップバイステップガイドを使用して、C# InteropとIronXLを使用してExcelでピボットテーブルを作成する方法を学びましょう。 詳しく読む
公開日 10月 27, 2025 C#で列ヘッダー付きのDataGridViewをExcelにエクスポートする方法 IronXLライブラリを使用したステップバイステップのC#チュートリアルで、列ヘッダーを保持しながらDataGridViewデータをExcelにエクスポートする方法を学びましょう。 詳しく読む
公開日 10月 27, 2025 .NET Core CSVリーダーとしてのIronXLの使用方法 実用的な例とともにIronXLを.NET Core CSVリーダーとして効果的に使用する方法を学びましょう。 詳しく読む