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

IronXLを使用して C# .NET Coreで Excel スプレッドシートを作成する方法

ASP.NET CoreでExcelスプレッドシートをプログラムによって生成することで、財務報告や在庫管理からデータのエクスポート、自動化されたダッシュボードまで、強力な自動化の可能性が広がります。 Webアプリケーション開発では、.NET Core Excelスプレッドシート生成を統合することで、データアクセシビリティとレポーティングが強化され、ユーザーは複雑なデータセットと対話し、そこから貴重な洞察を引き出すことができます。 IronXL for .NETを使用すると、開発者は Microsoft Office をインストールしたり、Office Interop に依存したりすることなく、Excel ファイルを作成できます。このクロスプラットフォームライブラリは Windows、Linux、macOS で動作するため、 AzureDocker コンテナにデプロイされる最新のデータ駆動型アプリケーションに最適です。

このチュートリアルでは、.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
SHELL

最初のコマンドは、Visual Studio パッケージ マネージャー コンソールで動作します。 2つ目の方法は、 .NET CLIを使用するどのターミナルでも動作します。 どちらの方法でも同じNuGetパッケージがインストールされ、 IronXL がプロジェクトの参照に自動的に追加されます。

インストールが完了すると、 IronXLは単一のusingディレクティブで使用できるようになります。このライブラリは、追加の設定、ランタイム依存関係、またはMicrosoft Officeのインストールを必要としません。 .NET 10が動作するあらゆるプラットフォーム(Windows、Linux、macOS、またはあらゆるクラウド環境)で動作します。

詳細なインストールオプション(DLLの手動ダウンロードを含む)については、 IronXLのインストールガイドを参照してください。 Linux開発者は、プラットフォーム固有のガイダンスについて、 Linuxの導入に関するドキュメントも確認する必要があります。

 .NET Core Excel スプレッドシート: IronXL for .NETを使用して C# でProfessionalExcel ワークシート ファイルを作成する: 画像 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")
$vbLabelText   $csharpLabel

WorkBook.Create() メソッドは、新しい Excel ワークブックを初期化し、XLSX (Excel 2007 で導入された最新の XML ベースの形式) または XLS (従来のバイナリ形式) を指定するための ExcelFileFormat パラメーターを受け取ります。 ファイルサイズが小さく、最新のツールとの互換性が高いため、ほとんどのシナリオではXLSXを推奨します。 CreateWorkSheet() メソッドは、Excel データが格納されている名前付きワークシートを追加します。各ワークブックには、関連データを整理するための複数の個別のシートを含めることができます。

セルの値は、Excel のアドレス指定システムを反映した括弧表記を使用して設定されます -- sheet["A1"] はセル A1 を直接ターゲットにします。 この構文は特定のセルと範囲の両方をサポートしているため、あらゆるスプレッドシートプロジェクトにおいて一括操作を簡単に行うことができます。

出力

 .NET Core Excel スプレッドシート: IronXL for .NETを使用して C# でProfessionalExcel ワークシート ファイルを作成する : 画像 2 - Excel 出力


ワークシートを追加したり、データをプログラムで入力したりするにはどうすればよいですか?

実際の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")
$vbLabelText   $csharpLabel

文字列補間($"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")
$vbLabelText   $csharpLabel

データベース統合を必要とするアプリケーションの場合、 IronXL はEntity Framework Core、Dapper、または生の ADO .NETと連携します。 DataTableオブジェクトのデータはワークシートに直接エクスポートできるため、レポート作成ワークフローが簡素化され、ユーザーはシステム間でデータを共有できるようになります。

ワークシートの管理方法Excelファイルの作成方法については、ドキュメントをご覧ください。 既存のExcelファイルを読み込む方法については、 Excelファイルの読み込みチュートリアルを参照してください。

出力

 .NET Core Excel スプレッドシート: IronXLを使用して C# でProfessionalExcel ワークシート ファイルを作成する : 画像 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.Now;

// 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.Now;

// 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")
$vbLabelText   $csharpLabel

Style プロパティは、Microsoft Excel の機能に一致する書式設定オプションを公開します。 背景色は16進数コード(# の接頭辞の有無に関わらず)を受け付けますが、FormatString はExcelのカスタム書式構文と同じ数値形式を適用します。つまり、同じパターンが両方の環境で機能します。 罫線のスタイル設定は、細線、中線、太線、二重線の4種類に対応しており、Excelワークシートのセル境界を正確に制御できます。

高度な書式設定テクニック

大量のデータを含む Excel スプレッドシートの場合、CreateFreezePane(0, 1) はスクロール中もヘッダーを表示したままにします。これは、大規模なデータセットの使いやすさを大幅に向上させる、さりげない改善です。 sheet.PrintSetup を介した印刷設定は、物理的な出力の向き、余白、およびスケーリングを処理します。

セル書式設定ガイド罫線設定チュートリアルで、その他のスタイル設定オプションをご覧ください。 これらのツールを使えば、細胞の外観に関するあらゆる側面を完全に制御できます。


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")
$vbLabelText   $csharpLabel

Formula プロパティは、標準の Excel 数式構文を受け入れます。つまり、Microsoft Excel で機能する数式がここでも機能します。 数式を設定した後、EvaluateAll() を呼び出して結果を計算します。 この手順により、計算された値が IntValue、または StringValue のような型付きプロパティを通じてすぐに利用できるようになります。 EvaluateAll() を呼び出さなくても、数式は正しく保存され、Excel で開いたときに計算されますが、プログラムから結果にアクセスするには、まず評価を行う必要があります。

出力

 .NET Core Excel スプレッドシート: IronXLを使用して C# でProfessionalExcel ワークシート ファイルを作成する : 画像 4 - Excel 数式出力

 .NET Core Excel スプレッドシート: IronXLを使用して C# でProfessionalExcel ワークシート ファイルを作成する : 画像 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()
$vbLabelText   $csharpLabel

これらの方法は、計算結果をスプレッドシート上で数式として表示する必要がない場合に、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
$vbLabelText   $csharpLabel

各フォーマットは、特定の使用ケースに対応しています。 XLSXは、Excelユーザーと共有する際に、書式や数式を保持するために最適です。 CSVは、データベース、分析ツール、または他のスプレッドシートアプリケーションにインポートするための最大の互換性を提供します。 JSONはJavaScriptフロントエンドやREST APIと自然に統合できます。

出力

 .NET Core Excel スプレッドシート: IronXLを使用して C# でProfessionalExcel ワークシート ファイルを作成する : 画像 6 - 最新の Excel 出力

 .NET Core Excel スプレッドシート: IronXLを使用して C# でProfessionalExcel ワークシート ファイルを作成する : 画像 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.Now;

    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.Now;

    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
$vbLabelText   $csharpLabel

ToStream() メソッドは、完全な Excel ファイルを含む MemoryStream を作成し、 ASP.NET Core の File() メソッドは、適切な MIME タイプとともにそれを返します。 このパターンは、MVCコントローラ、APIコントローラ、最小限のAPIで同じように機能します。ブラウザは自動的に指定されたファイル名でファイルのダウンロードをトリガーし、ユーザーは生成されたExcelファイルをローカルに保存することができます。

トラフィック量の多いアプリケーションの場合、基となるデータが頻繁に変更されない場合は、レポートを非同期で生成し、結果をキャッシュすることを検討してください。このアプローチにより、パフォーマンスが大幅に向上します。 フォーマット変換に関するドキュメントには、パスワードで保護されたファイルを含む、その他のエクスポートシナリオについても記載されています。


IronXLは他の.NET Excelライブラリと比べてどうですか?

.NET Excel操作用のライブラリはいくつか存在し、それぞれ強みが異なります。 以下の表は、実運用アプリケーションにおいて最も重要な基準に基づいて、これらの製品を比較したものです。

.NET Core開発向け.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"] を使用して範囲に書き込む方が、個々のセルを順番に処理するよりも大幅に高速です。 異種データの場合、動的なセルアドレス指定には文字列補間を用いたループを使用してください。

オンデマンドでレポートを生成するASP.NET Coreエンドポイントの場合は、結果として得られるバイト配列または出力を、Redis のような分散キャッシュを使用してキャッシュすることを検討してください。 基となるデータがリクエスト間で変更されない場合、キャッシュされた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スプレッドシートにエクスポートできるようにすることで、ユーザーエクスペリエンスを向上させ、エンドユーザーがデータにアクセスしやすく、ポータブルにします。

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

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

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

アイアンサポートチーム

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