フッターコンテンツにスキップ
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アプリケーション、コンソールアプリケーション、バックグラウンドサービスなど、どのようなアプリケーションを構築する場合でも、これらのテクニックはすべて for .NET 10アプリケーションに適用できます。 最終的には、Visual Studioまたは任意 for .NET開発環境の既存プロジェクトと統合できる、本番環境に対応したExcelファイルを生成するための動作するコードが完成します。


.NET CoreプロジェクトにIronXLをインストールするにはどうすればよいですか?

スプレッドシートを作成する前に、 IronXLをプロジェクトに追加する必要があります。 Visual Studio でNuGetパッケージ マネージャー コンソールを開き、次のいずれかのコマンドを実行します。

Install-Package IronXL.Excel

最初のコマンドは、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#でプロフェッショナルな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、および以前 for .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

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

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

出力

.NET Core Excelスプレッドシート: IronXL for .NETを使用してC#でプロフェッショナルなExcelワークシートファイルを作成: 画像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#でプロフェッショナルな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.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()を呼び出して結果を計算します。 このステップは、計算された値をStringValueのような型付きプロパティを通じてすぐに利用できることを保証します。 EvaluateAll()を呼び出さなくても、数式はExcelで開いたときに正しく保存され、計算されますが、プログラム的に結果にアクセスするにはまず評価が必要です。

出力

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

.NET Core 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()
$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#でプロフェッショナルなExcelワークシートファイルを作成: 画像6 - モダンExcel出力

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

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

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


IronXLは他 for .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は、現代 for .NET開発においてクロスプラットフォーム展開を優先事項として強調しており、保守性の高いソリューションを実現するにはOfficeに依存しないライブラリが不可欠であるとしている。

セキュリティを重視するチームにとって、 IronXLはMicrosoft Officeとは独立して動作し、Office Interopを回避することで、外部からの脆弱性のリスクを最小限に抑えます。 暗号化とパスワード保護機能が組み込まれているため、生成された Excel ファイルを保護し、承認されたユーザーのみが重要なワークシートやデータにアクセスしたり編集したりできるようにすることができます。 IronXLのライセンスオプションを確認し、チームに最適なプランを見つけてください。


大規模な環境下でのパフォーマンスをどのように管理していますか?

アプリケーションが多数の同時ユーザー向けにExcelファイルを生成したり、大規模なデータセットを処理したりする場合、パフォーマンス計画が非常に重要になります。 IronXLは、OfficeプロセスやCOMオブジェクトを生成することなく、完全にメモリ上で動作するため、大規模なワークブックを効率的に処理できます。 このアーキテクチャにより、CPUとメモリのオーバーヘッドを予測可能な範囲に抑えることができます。

主要業績戦略

データ量の多いレポートの場合、セルを一度に設定するのではなく、一括で設定します。ブラケット表記sheet["A1:Z1000"]を使用して範囲に書き込むことは、均一な値を設定する際に個々のセルごとに反復するよりもかなり高速である場合があります。 異種データの場合、動的なセルアドレス指定には文字列補間を用いたループを使用してください。

ASP.NET Coreエンドポイントがオンデマンドでレポートを生成する場合、結果のバイト配列またはIMemoryCacheまたはRedisのような分散キャッシュを使用してキャッシュを検討してください。 基となるデータがリクエスト間で変更されない場合、キャッシュされたExcelファイルは再生成することなく即座に返されます。 この戦略は、ダッシュボードのエクスポートや定期レポートに特に効果的です。

各スレッドが独自のWorkBookインスタンスで動作するとき、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
テクニカルライター

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

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

アイアンサポートチーム

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