IronXLを使用して C# .NET Coreで Excel スプレッドシートを作成する方法
ASP.NET CoreでExcelスプレッドシートをプログラムによって生成することで、財務報告や在庫管理からデータのエクスポート、自動化されたダッシュボードまで、強力な自動化の可能性が広がります。 Webアプリケーション開発では、.NET Core Excelスプレッドシート生成を統合することで、データアクセシビリティとレポーティングが強化され、ユーザーは複雑なデータセットと対話し、そこから貴重な洞察を引き出すことができます。 IronXL for .NET を使用すれば、開発者は Microsoft Office をインストールしたり、Office Interop に依存したりすることなく、Excel ファイルを作成できます。このクロスプラットフォームライブラリは Windows、Linux、macOS で動作するため、Azure や Docker コンテナにデプロイされる最新のデータ駆動型アプリケーションに最適です。
このチュートリアルでは、.NET Core Excelスプレッドシートをプロフェッショナルな書式設定、数式、複数のエクスポートオプションで作成する方法を説明します。 ASP.NET Core Webアプリケーション、コンソールアプリケーション、バックグラウンドサービスなど、どのようなアプリケーションを構築する場合でも、これらのテクニックはすべての.NET 10アプリケーションに適用できます。 最終的には、Visual Studioまたは任意の.NET開発環境の既存プロジェクトと統合できる、本番環境に対応したExcelファイルを生成するための動作するコードが完成します。
.NET CoreプロジェクトにIronXLをインストールするにはどうすればよいですか?
スプレッドシートを作成する前に、 IronXLをプロジェクトに追加する必要があります。 Visual Studio でNuGetパッケージ マネージャー コンソールを開き、次のいずれかのコマンドを実行します。
Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
最初のコマンドは、Visual Studio パッケージ マネージャー コンソールで動作します。 2つ目の方法は、 .NET CLIを使用するどのターミナルでも動作します。 どちらの方法でも同じNuGetパッケージがインストールされ、 IronXL がプロジェクトの参照に自動的に追加されます。
インストールが完了すると、IronXLは単一のusing@ディレクティブで使用できるようになります。このライブラリは追加の設定やランタイムの依存関係、Microsoft Officeのインストールを必要としません。 .NET 10が動作するあらゆるプラットフォーム(Windows、Linux、macOS、またはあらゆるクラウド環境)で動作します。
詳細なインストールオプション(DLLの手動ダウンロードを含む)については、 IronXLのインストールガイドを参照してください。 Linux開発者は、プラットフォーム固有のガイダンスについて、Linux向け導入ドキュメントも併せて確認してください。
.NETコアExcelスプレッドシート:IronXL for .NETを使用してC#でプロフェッショナルなExcelワークシートファイルを作成します:イメージ1 - インストール
Officeに依存しないExcelスプレッドシートを作成するにはどうすればよいですか?
従来のMicrosoft Excelによる自動化には、MS Officeのインストールが必要であり、Office Interopを使用しますが、これはLinuxやコンテナ化された環境では動作しません。 MicrosoftのOffice相互運用に関するドキュメントで説明されているように、Office相互運用は導入の複雑さとライセンスに関する懸念をもたらします。 IronXL for .NETは、Excelファイルをネイティブに処理し、最新のスプレッドシート機能を完全にサポートする純粋な.NETソリューションを提供することで、これらの制限を排除します。
このライブラリは、.NET 8、.NET 9、.NET 10、および以前の.NET Coreバージョンをサポートしています。 XLSX、XLS、CSV、その他のスプレッドシート形式を、外部依存なしに処理します。 このため、サーバーサイドアプリケーション、マイクロサービス、およびMicrosoft Officeのインストールが現実的でないシナリオにおいて、特に価値を発揮します。 NuGetによる簡単な統合により、数分以内にExcelファイルの作成を開始できます。
using IronXL;
// Create a new workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add an Excel worksheet with a custom name
WorkSheet sheet = workbook.CreateWorkSheet("SalesReport");
// Set a cell value
sheet["A1"].Value = "Product Sales Summary";
// Save the generated Excel file
workbook.SaveAs("SalesReport.xlsx");
using IronXL;
// Create a new workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add an Excel worksheet with a custom name
WorkSheet sheet = workbook.CreateWorkSheet("SalesReport");
// Set a cell value
sheet["A1"].Value = "Product Sales Summary";
// Save the generated Excel file
workbook.SaveAs("SalesReport.xlsx");
Imports IronXL
' Create a new workbook in XLSX format
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
' Add an Excel worksheet with a custom name
Dim sheet As WorkSheet = workbook.CreateWorkSheet("SalesReport")
' Set a cell value
sheet("A1").Value = "Product Sales Summary"
' Save the generated Excel file
workbook.SaveAs("SalesReport.xlsx")
CODE-43156--@@メソッドは新しいExcelワークブックを初期化し、XLSX(Excel 2007で導入された最新のXMLベースのフォーマット)またはXLS(従来のバイナリフォーマット)を指定するExcelFileFormat@パラメータを受け入れます。 ファイルサイズが小さく、最新のツールとの互換性が高いため、ほとんどのシナリオではXLSXを推奨します。 CODE-43158--@@@メソッドは、Excelのデータが存在する名前付きワークシートを追加します。
セルの値は、Excelのアドレス指定システムを反映したブラケット記法を使用して設定されています--sheet["A1"]は、セルA1を直接ターゲットにしています。 この構文は特定のセルと範囲の両方をサポートしているため、あらゆるスプレッドシートプロジェクトにおいて一括操作を簡単に行うことができます。
出力
.NETコアExcelスプレッドシート:IronXL for .NETを使用してC#でプロフェッショナルなExcelワークシートファイルを作成します:画像2 - エクセル出力</a
ワークシートを追加したり、データをプログラムで入力したりするにはどうすればよいですか?
実際のExcelスプレッドシートには、複数のワークシートにまたがる構造化データが含まれています。 IronXLは、データ駆動型アプリケーションにおける手動データ入力や自動化されたデータパイプラインを問わず、情報を整理しセルに効率的に入力するための柔軟な方法を提供します。
using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("MonthlySales");
// Set column names as headers
sheet["A1"].Value = "Month";
sheet["B1"].Value = "Revenue";
sheet["C1"].Value = "Units Sold";
// Populate Excel data using a loop (mock sales data)
string[] months = { "January", "February", "March", "April", "May", "June" };
decimal[] revenue = { 45000.50m, 52000.75m, 48500.25m, 61000.00m, 58750.50m, 67200.25m };
int[] units = { 150, 175, 160, 200, 190, 220 };
for (int i = 0; i < months.Length; i++)
{
int row = i + 2;
sheet[$"A{row}"].Value = months[i];
sheet[$"B{row}"].Value = revenue[i];
sheet[$"C{row}"].Value = units[i];
}
// Set a range of cells to the same value across columns
sheet["D2:D7"].Value = "Active";
workbook.SaveAs("MonthlySales.xlsx");
using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("MonthlySales");
// Set column names as headers
sheet["A1"].Value = "Month";
sheet["B1"].Value = "Revenue";
sheet["C1"].Value = "Units Sold";
// Populate Excel data using a loop (mock sales data)
string[] months = { "January", "February", "March", "April", "May", "June" };
decimal[] revenue = { 45000.50m, 52000.75m, 48500.25m, 61000.00m, 58750.50m, 67200.25m };
int[] units = { 150, 175, 160, 200, 190, 220 };
for (int i = 0; i < months.Length; i++)
{
int row = i + 2;
sheet[$"A{row}"].Value = months[i];
sheet[$"B{row}"].Value = revenue[i];
sheet[$"C{row}"].Value = units[i];
}
// Set a range of cells to the same value across columns
sheet["D2:D7"].Value = "Active";
workbook.SaveAs("MonthlySales.xlsx");
Imports IronXL
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("MonthlySales")
' Set column names as headers
sheet("A1").Value = "Month"
sheet("B1").Value = "Revenue"
sheet("C1").Value = "Units Sold"
' Populate Excel data using a loop (mock sales data)
Dim months As String() = {"January", "February", "March", "April", "May", "June"}
Dim revenue As Decimal() = {45000.5D, 52000.75D, 48500.25D, 61000.0D, 58750.5D, 67200.25D}
Dim units As Integer() = {150, 175, 160, 200, 190, 220}
For i As Integer = 0 To months.Length - 1
Dim row As Integer = i + 2
sheet($"A{row}").Value = months(i)
sheet($"B{row}").Value = revenue(i)
sheet($"C{row}").Value = units(i)
Next
' Set a range of cells to the same value across columns
sheet("D2:D7").Value = "Active"
workbook.SaveAs("MonthlySales.xlsx")
文字列補間 ($"A{row}") は、ループ内での動的なセル・アドレッシングを可能にし、あらゆるデータ・ソースからプログラム的に行を入力することを容易にします。 範囲構文 sheet["D2:D7"] は、複数のセルに同時に値を適用します -- ステータス列、デフォルト値、データ領域の初期化に便利です。 IronXLはデータ型の変換を自動的に処理し、小数値を数値として、文字列をテキストとして保存すると同時に、生成されるファイルに適したExcelデータ型を保持します。
複数のワークシートの操作
複数のワークシートを作成することで、関連するExcelデータを1つのワークブック内で論理的に整理することができます:
WorkSheet summarySheet = workbook.CreateWorkSheet("Summary");
WorkSheet detailSheet = workbook.CreateWorkSheet("Details");
WorkSheet archiveSheet = workbook.CreateWorkSheet("Archive");
WorkSheet summarySheet = workbook.CreateWorkSheet("Summary");
WorkSheet detailSheet = workbook.CreateWorkSheet("Details");
WorkSheet archiveSheet = workbook.CreateWorkSheet("Archive");
Dim summarySheet As WorkSheet = workbook.CreateWorkSheet("Summary")
Dim detailSheet As WorkSheet = workbook.CreateWorkSheet("Details")
Dim archiveSheet As WorkSheet = workbook.CreateWorkSheet("Archive")
データベース統合を必要とするアプリケーションの場合、 IronXL はEntity Framework Core、Dapper、または生の ADO .NETと連携します。 DataTableオブジェクトのデータはワークシートに直接エクスポートできるため、レポート作成ワークフローが簡素化され、ユーザーはシステム間でデータを共有できるようになります。
ワークシートの管理方法やExcelファイルの作成方法については、ドキュメントをご覧ください。 既存のExcelファイルを読み込む方法については、 Excelファイルの読み込みチュートリアルを参照してください。
出力
.NETコアExcelスプレッドシート:IronXLを使用してC#でプロフェッショナルなExcelワークシートファイルを作成する:画像3 - 複数のワークシート出力。
Professional書式設定とスタイリングはどのように適用すればよいですか?
生データは、適切にフォーマットされたときに意味を持つようになります。 IronXLは、背景色、フォント、罫線、数値形式など、Excelスプレッドシートを役員向けプレゼンテーションや顧客への納品物に適した洗練されたレポートに変換するための重要な書式設定機能をサポートしています。
using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("FormattedReport");
// Create headers with styling
sheet["A1"].Value = "Category";
sheet["B1"].Value = "Amount";
sheet["C1"].Value = "Date";
// Apply header formatting to the Excel sheet
sheet["A1:C1"].Style.SetBackgroundColor("#2E86AB");
sheet["A1:C1"].Style.Font.Bold = true;
sheet["A1:C1"].Style.Font.SetColor("#FFFFFF");
// Add sample data to specific cells
sheet["A2"].Value = "Software License";
sheet["B2"].Value = 1299.99m;
sheet["C2"].Value = DateTime.なしw;
// Format currency and date columns
sheet["B2"].FormatString = "$#,##0.00";
sheet["C2"].FormatString = "yyyy-MM-dd";
// Add borders around the data range
var dataRange = sheet["A1:C2"];
dataRange.Style.BottomBorder.SetColor("#000000");
dataRange.Style.BottomBorder.Type = IronXL.Styles.BorderType.Thin;
workbook.SaveAs("FormattedReport.xlsx");
using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("FormattedReport");
// Create headers with styling
sheet["A1"].Value = "Category";
sheet["B1"].Value = "Amount";
sheet["C1"].Value = "Date";
// Apply header formatting to the Excel sheet
sheet["A1:C1"].Style.SetBackgroundColor("#2E86AB");
sheet["A1:C1"].Style.Font.Bold = true;
sheet["A1:C1"].Style.Font.SetColor("#FFFFFF");
// Add sample data to specific cells
sheet["A2"].Value = "Software License";
sheet["B2"].Value = 1299.99m;
sheet["C2"].Value = DateTime.なしw;
// Format currency and date columns
sheet["B2"].FormatString = "$#,##0.00";
sheet["C2"].FormatString = "yyyy-MM-dd";
// Add borders around the data range
var dataRange = sheet["A1:C2"];
dataRange.Style.BottomBorder.SetColor("#000000");
dataRange.Style.BottomBorder.Type = IronXL.Styles.BorderType.Thin;
workbook.SaveAs("FormattedReport.xlsx");
Imports IronXL
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("FormattedReport")
' Create headers with styling
sheet("A1").Value = "Category"
sheet("B1").Value = "Amount"
sheet("C1").Value = "Date"
' Apply header formatting to the Excel sheet
sheet("A1:C1").Style.SetBackgroundColor("#2E86AB")
sheet("A1:C1").Style.Font.Bold = True
sheet("A1:C1").Style.Font.SetColor("#FFFFFF")
' Add sample data to specific cells
sheet("A2").Value = "Software License"
sheet("B2").Value = 1299.99D
sheet("C2").Value = DateTime.Now
' Format currency and date columns
sheet("B2").FormatString = "$#,##0.00"
sheet("C2").FormatString = "yyyy-MM-dd"
' Add borders around the data range
Dim dataRange = sheet("A1:C2")
dataRange.Style.BottomBorder.SetColor("#000000")
dataRange.Style.BottomBorder.Type = IronXL.Styles.BorderType.Thin
workbook.SaveAs("FormattedReport.xlsx")
CODE-43162--@@@プロパティは、Microsoft Excelの機能にマッチする書式オプションを公開します。 背景色は16進コード(#接頭辞の有無にかかわらず)を受け付け、FormatStringはExcelのカスタム書式構文と同じ数値書式を適用します。 罫線のスタイル設定は、細線、中線、太線、二重線の4種類に対応しており、Excelワークシートのセル境界を正確に制御できます。
高度な書式設定テクニック
CODE-43165--@@は、膨大なデータを含むExcelスプレッドシートのために、スクロール中もヘッダーを表示します。 CODE-43166による印刷設定は、物理的な出力の方向、マージン、スケーリングを処理します。
セル書式設定ガイドと罫線設定チュートリアルで、その他のスタイル設定オプションをご覧ください。 これらのツールを使えば、細胞の外観に関するあらゆる側面を完全に制御できます。
Excelの数式を使って自動計算を行うにはどうすればよいですか?
Excelの計算エンジンはデータ分析を自動化し、 IronXLは数式を完全にサポートします。 数式を標準的なExcel構文を使用して文字列として設定すれば、 IronXLは要求に応じて結果を自動的に計算します。これは、レポート作成や財務分析に不可欠です。
using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("BudgetCalculations");
// Add expense data to the Excel workbook
sheet["A1"].Value = "Expense";
sheet["B1"].Value = "Amount";
sheet["A2"].Value = "Rent";
sheet["B2"].Value = 2500;
sheet["A3"].Value = "Utilities";
sheet["B3"].Value = 350;
sheet["A4"].Value = "Supplies";
sheet["B4"].Value = 875;
sheet["A5"].Value = "Marketing";
sheet["B5"].Value = 1200;
// Add formulas for calculations
sheet["A7"].Value = "Total:";
sheet["B7"].Formula = "=SUM(B2:B5)";
sheet["A8"].Value = "Average:";
sheet["B8"].Formula = "=AVERAGE(B2:B5)";
sheet["A9"].Value = "Maximum:";
sheet["B9"].Formula = "=MAX(B2:B5)";
sheet["A10"].Value = "Count:";
sheet["B10"].Formula = "=COUNT(B2:B5)";
// Calculate all formulas
workbook.EvaluateAll();
// Access calculated values programmatically
decimal total = sheet["B7"].DecimalValue;
Console.WriteLine($"Calculated total: {total}");
workbook.SaveAs("BudgetCalculations.xlsx");
using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("BudgetCalculations");
// Add expense data to the Excel workbook
sheet["A1"].Value = "Expense";
sheet["B1"].Value = "Amount";
sheet["A2"].Value = "Rent";
sheet["B2"].Value = 2500;
sheet["A3"].Value = "Utilities";
sheet["B3"].Value = 350;
sheet["A4"].Value = "Supplies";
sheet["B4"].Value = 875;
sheet["A5"].Value = "Marketing";
sheet["B5"].Value = 1200;
// Add formulas for calculations
sheet["A7"].Value = "Total:";
sheet["B7"].Formula = "=SUM(B2:B5)";
sheet["A8"].Value = "Average:";
sheet["B8"].Formula = "=AVERAGE(B2:B5)";
sheet["A9"].Value = "Maximum:";
sheet["B9"].Formula = "=MAX(B2:B5)";
sheet["A10"].Value = "Count:";
sheet["B10"].Formula = "=COUNT(B2:B5)";
// Calculate all formulas
workbook.EvaluateAll();
// Access calculated values programmatically
decimal total = sheet["B7"].DecimalValue;
Console.WriteLine($"Calculated total: {total}");
workbook.SaveAs("BudgetCalculations.xlsx");
Imports IronXL
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("BudgetCalculations")
' Add expense data to the Excel workbook
sheet("A1").Value = "Expense"
sheet("B1").Value = "Amount"
sheet("A2").Value = "Rent"
sheet("B2").Value = 2500
sheet("A3").Value = "Utilities"
sheet("B3").Value = 350
sheet("A4").Value = "Supplies"
sheet("B4").Value = 875
sheet("A5").Value = "Marketing"
sheet("B5").Value = 1200
' Add formulas for calculations
sheet("A7").Value = "Total:"
sheet("B7").Formula = "=SUM(B2:B5)"
sheet("A8").Value = "Average:"
sheet("B8").Formula = "=AVERAGE(B2:B5)"
sheet("A9").Value = "Maximum:"
sheet("B9").Formula = "=MAX(B2:B5)"
sheet("A10").Value = "Count:"
sheet("B10").Formula = "=COUNT(B2:B5)"
' Calculate all formulas
workbook.EvaluateAll()
' Access calculated values programmatically
Dim total As Decimal = sheet("B7").DecimalValue
Console.WriteLine($"Calculated total: {total}")
workbook.SaveAs("BudgetCalculations.xlsx")
CODE-43167--@@プロパティは、標準的なExcelの数式構文を受け入れます。 数式を設定した後、EvaluateAll()を呼び出し、結果を計算する。 このステップでは、@@--CODE-43169--@、@@--CODE-43170--@、@@--CODE-43171--@のようなタイプされたプロパティを通して、計算された値がすぐに利用できるようにします。 CODE-43172-@@を呼び出さなくても、Excelで開いたときに数式は正しく保存され、計算されますが、プログラムによる結果へのアクセスには、まず評価が必要です。
出力
.NETコアExcelスプレッドシート:IronXLを使用してC#でプロフェッショナルなExcelワークシートファイルを作成する: 画像4 - Excelの数式出力。
.NETコアExcelスプレッドシート:IronXLを使用してC#でプロフェッショナルなExcelワークシートファイルを作成する: 画像5 - コンソール出力。
IronXLは数学演算(SUM、AVERAGE、ROUND)、統計関数(COUNT、MAX、MIN、STDEV)、テキスト操作(CONCATENATE、LEFT、RIGHT)、論理演算(IF、AND、OR)を含む150以上のExcel関数をサポートしています。 ワークシートをまたいだセル参照など、高度なシナリオについては、数式編集ガイドを参照してください。
組み込みの集計方法
Excelファイルに数式を永続的に保存する必要がないような、よりシンプルなシナリオでは、 IronXLは組み込みの集計メソッドを提供します。
decimal sum = sheet["B2:B5"].Sum();
decimal avg = sheet["B2:B5"].Avg();
decimal max = sheet["B2:B5"].Max();
decimal sum = sheet["B2:B5"].Sum();
decimal avg = sheet["B2:B5"].Avg();
decimal max = sheet["B2:B5"].Max();
Dim sum As Decimal = sheet("B2:B5").Sum()
Dim avg As Decimal = sheet("B2:B5").Avg()
Dim max As Decimal = sheet("B2:B5").Max()
これらの方法は、計算結果をスプレッドシート上で数式として表示する必要がない場合に、C#ネイティブな代替手段を提供します。 オブジェクト指向APIは、文字列ベースの数式構文を必要とせずに、コードの可読性と型安全性を維持します。
Excelファイルをエクスポートしてダウンロードできるようにするにはどうすればよいですか?
IronXLはさまざまな統合要件を満たすために複数のエクスポート形式をサポートしています。 スプレッドシートは、標準的なExcel形式以外にも、データ交換用のCSV、Webアプリケーション用のJSON、レガシーシステムとの互換性を保つためのTSVにエクスポートすることができます。 この柔軟性により、Excel作成をあらゆるワークフローに簡単に統合できます。
using IronXL;
WorkBook workbook = WorkBook.Load("BudgetCalculations.xlsx");
// Export to different formats
workbook.SaveAs("output.xlsx"); // Modern Excel (Office 2007+)
workbook.SaveAs("output.xls"); // Legacy Excel (97-2003)
workbook.SaveAsCsv("output.csv"); // CSV for data import/export
workbook.SaveAsJson("output.json"); // JSON for web APIs
using IronXL;
WorkBook workbook = WorkBook.Load("BudgetCalculations.xlsx");
// Export to different formats
workbook.SaveAs("output.xlsx"); // Modern Excel (Office 2007+)
workbook.SaveAs("output.xls"); // Legacy Excel (97-2003)
workbook.SaveAsCsv("output.csv"); // CSV for data import/export
workbook.SaveAsJson("output.json"); // JSON for web APIs
Imports IronXL
Dim workbook As WorkBook = WorkBook.Load("BudgetCalculations.xlsx")
' Export to different formats
workbook.SaveAs("output.xlsx") ' Modern Excel (Office 2007+)
workbook.SaveAs("output.xls") ' Legacy Excel (97-2003)
workbook.SaveAsCsv("output.csv") ' CSV for data import/export
workbook.SaveAsJson("output.json") ' JSON for web APIs
各フォーマットは、特定の使用ケースに対応しています。 XLSXは、Excelユーザーと共有する際に、書式や数式を保持するために最適です。 CSVは、データベース、分析ツール、または他のスプレッドシートアプリケーションにインポートするための最大の互換性を提供します。 JSONはJavaScriptフロントエンドやREST APIと自然に統合できます。
出力
.NETコアExcelスプレッドシート:IronXLを使用してC#でプロフェッショナルなExcelワークシートファイルを作成する: 画像6 - 最新のExcel出力。
.NETコアExcelスプレッドシート:IronXLを使用してC#でプロフェッショナルなExcelワークシートファイルを作成する: Image 7 - JSON出力。
ASP.NET Coreで Excel ファイルを配信する
.NET Core Webアプリケーションの場合、Excelファイルをダウンロード可能な応答として提供するには、わずか数行のコードが必要です:
[HttpGet("download-report")]
public IActionResult DownloadReport()
{
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Report");
sheet["A1"].Value = "Generated Report";
sheet["A2"].Value = DateTime.なしw;
var stream = workbook.ToStream();
return File(
stream,
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"Report.xlsx"
);
}
[HttpGet("download-report")]
public IActionResult DownloadReport()
{
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Report");
sheet["A1"].Value = "Generated Report";
sheet["A2"].Value = DateTime.なしw;
var stream = workbook.ToStream();
return File(
stream,
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"Report.xlsx"
);
}
Imports Microsoft.AspNetCore.Mvc
<HttpGet("download-report")>
Public Function DownloadReport() As IActionResult
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Report")
sheet("A1").Value = "Generated Report"
sheet("A2").Value = DateTime.Now
Dim stream = workbook.ToStream()
Return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Report.xlsx")
End Function
CODE-43173--@@メソッドは、完全なExcelファイルを含むMemoryStreamを作成し、ASP.NET CoreのFile()メソッドは適切なMIMEタイプで返します。 このパターンは、MVCコントローラ、APIコントローラ、最小限のAPIで同じように機能します。ブラウザは自動的に指定されたファイル名でファイルのダウンロードをトリガーし、ユーザーは生成されたExcelファイルをローカルに保存することができます。
トラフィック量の多いアプリケーションの場合、基となるデータが頻繁に変更されない場合は、レポートを非同期で生成し、結果をキャッシュすることを検討してください。このアプローチにより、パフォーマンスが大幅に向上します。 フォーマット変換に関するドキュメントには、パスワードで保護されたファイルを含む、その他のエクスポートシナリオについても記載されています。
IronXLは他の.NET Excelライブラリと比べてどうですか?
.NET Excel操作用のライブラリはいくつか存在し、それぞれ強みが異なります。 以下の表は、実運用アプリケーションにおいて最も重要な基準に基づいて、これらの製品を比較したものです。
| 特徴 | IronXL | オープンソースの代替案 |
|---|---|---|
| Microsoft Officeのインストールが必要です | なし | なし |
| 技術サポート | はい(24時間体制のエンジニアリングチーム) | 地域密着型 |
| クロスプラットフォーム(.NET Core) | フルサポート | 図書館によって異なります |
| 数式計算エンジン | 150以上の機能 | 限定的またはなし |
| ライセンスモデル | 無料トライアル付きの商用 | さまざまなオープンソース |
IronXLは、信頼性の高い技術サポート、ドキュメント、そして継続的なアップデートが求められるEnterprise環境において、卓越した性能を発揮します。 このライブラリは、破損したファイル、複雑な数式、大規模なデータセットなど、オープンソースの代替ライブラリでは処理が難しいような特殊なケースにも適切に対応します。 開発スピードと生産の信頼性を重視するチームにとって、IronXLの商用サポートは安心感をもたらします。
Stack Overflow での議論によると、開発者は、.NET Core プロジェクトで Excel ライブラリを選択する際の決め手として、API のシンプルさとドキュメントの質を頻繁に挙げています。 .NET Foundationは、現代の.NET開発においてクロスプラットフォーム展開を優先事項として強調しており、保守性の高いソリューションを実現するにはOfficeに依存しないライブラリが不可欠であるとしている。
セキュリティを重視するチームにとって、 IronXLはMicrosoft Officeとは独立して動作し、Office Interopを回避することで、外部からの脆弱性のリスクを最小限に抑えます。 暗号化とパスワード保護機能が組み込まれているため、生成された Excel ファイルを保護し、承認されたユーザーのみが重要なワークシートやデータにアクセスしたり編集したりできるようにすることができます。 IronXLのライセンスオプションを確認し、チームに最適なプランを見つけてください。
大規模な環境下でのパフォーマンスをどのように管理していますか?
アプリケーションが多数の同時ユーザー向けにExcelファイルを生成したり、大規模なデータセットを処理したりする場合、パフォーマンス計画が非常に重要になります。 IronXLは、OfficeプロセスやCOMオブジェクトを生成することなく、完全にメモリ上で動作するため、大規模なワークブックを効率的に処理できます。 このアーキテクチャにより、CPUとメモリのオーバーヘッドを予測可能な範囲に抑えることができます。
主要業績戦略
データ量の多いレポートでは、セルに1つずつ入力するのではなく、一括で入力します。ブラケット表記sheet["A1:Z1000"]を使って範囲に書き込むと、一様な値を設定するときに個々のセルを繰り返し処理するよりも大幅に速くなります。 異種データの場合、動的なセルアドレス指定には文字列補間を用いたループを使用してください。
オンデマンドでレポートを生成する.NET Coreエンドポイントでは、IMemoryCache@またはRedisのような分散キャッシュを使用して、結果のバイト配列またはMemoryStream@出力をキャッシュすることを検討してください。 基となるデータがリクエスト間で変更されない場合、キャッシュされたExcelファイルは再生成することなく即座に返されます。 この戦略は、ダッシュボードのエクスポートや定期レポートに特に効果的です。
マルチスレッド生成はIronXLでは各スレッドがそれ自身のインスタンスで動作するときに安全です。 同期を行わずに、ワークブックまたはワークシートのインスタンスをスレッド間で共有することは避けてください。 バックグラウンドジョブ処理の場合、HangfireやQuartz .NETなどのライブラリはIronXLと連携してレポート生成をスケジュール設定できるため、ピーク時以外の時間帯にファイルを事前に生成できます。
大規模なデータセットの場合は、数万行ものデータを1枚のシートにまとめるのではなく、複数のワークシートにデータを分割することを検討してください。 DataTable のエクスポートに関するドキュメントには、 .NETソースから大量のデータを転送するための効率的なパターンが示されています。 既存の Excel ファイルの読み込みやパスワードで保護されたワークブックの操作など、高度なシナリオを網羅した追加のコード例は、完全なAPI リファレンスに記載されています。
次のステップは何ですか?
IronXLを使用して.NET Core Excelスプレッドシートを作成することで、かつては多くの依存関係を必要とした作業が、シンプルな.NET操作へと変わります。 基本的なセル操作から数式計算、Professional書式設定まで、このライブラリは.NET 10が動作するあらゆる環境(Windowsサーバー、Linuxコンテナ、クラウドプラットフォームなど)で動作する、スプレッドシート自動化のための包括的なツールキットを提供します。
クロスプラットフォームアーキテクチャにより、開発用マシンと実稼働環境で同一の動作が保証されるため、Office Interopソリューションにありがちな"私のマシンでは動作しない"という問題が発生しません。 NuGetのインストールコマンドから始め、最初のワークブックを作成し、このガイド全体を通して示されているパターンを使用してそこから構築を進めてください。
30日間の無料トライアルをダウンロードして、制限なくすべての機能をお試しいただくか、本番環境への導入に関するライセンスオプションをご覧ください。 IronXLのコード例を参照して、その他のシナリオが実際にどのように動作するかを確認してください。また、完全なAPIリファレンスと高度な設定ガイドについては、 IronXLのドキュメントハブを参照してください。
よくある質問
.NET CoreでのExcelスプレッドシート生成にIronXLを使用するメリットは何ですか?
IronXLは、Microsoft OfficeやOffice Interopを必要とせず、プログラムによってExcelファイルを作成し、Windows、Linux、macOSのクロスプラットフォーム互換性を提供します。このため、最新のデータ駆動型アプリケーションに最適です。
IronXL はASP.NET Coreアプリケーションで使用できますか?
IronXLはASP.NET Coreアプリケーションに統合でき、財務報告、在庫追跡、データエクスポートなどの強力な自動化を可能にします。
IronXLを使用してウェブアプリケーションでExcelスプレッドシートを生成することは可能ですか?
はい。IronXLは、Web アプリケーションでの Excel シートの生成とダウンロード機能をサポートしており、ユーザーが複雑なデータ テーブルをエクスポートして操作できるようにすることで、ユーザー エクスペリエンスを向上させます。
IronXLはMicrosoft Officeのインストールを必要としますか?
IronXLはMicrosoft Officeのインストールを必要としません。Office Interopとは独立して動作し、導入と統合を簡素化します。
IronXL は .NET Core アプリケーションのデータアクセシビリティをどのように向上させるのですか?
IronXLは、開発者がプログラムによってExcelスプレッドシートを生成できるようにすることで、データへのアクセシビリティを向上させ、複雑なデータセットからのインタラクションや洞察の抽出を容易にします。
IronXLはAzureのようなクラウド環境に導入できますか?
IronXLはAzureやDockerコンテナなどのクラウド環境にデプロイでき、スケーラブルなクラウドベースのアプリケーションに適しています。
IronXLはmacOSとLinuxに対応していますか?
IronXLはmacOSとLinuxと完全な互換性があり、.NETアプリケーションでExcelスプレッドシートを生成するためのクロスプラットフォーム・ソリューションを提供します。
IronXLはどのようなアプリケーションに有効ですか?
財務報告、在庫管理、自動化されたダッシュボードなど、データ駆動型のソリューションを必要とするアプリケーションでは、Excelスプレッドシート生成にIronXLを使用することで大きなメリットが得られます。
IronXLはウェブアプリケーションのユーザー体験をどのように向上させますか?
IronXLは、複雑なデータテーブルをExcelスプレッドシートにエクスポートできるようにすることで、ユーザーエクスペリエンスを向上させ、エンドユーザーがデータにアクセスしやすく、ポータブルにします。



