IRONSOFTWAREHOME
IRONXLの使用

IronXLを使用して C# で Excel ファイルを生成する方法

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

従来、C#でExcelワークシートファイルをプログラム的に生成するには、Microsoft Officeのインストールや複雑なCOM相互運用が必要でした。IronXLこれを完全に変え、Officeへの依存なしにExcelファイルを作成できるシンプルなAPIを提供します。 このチュートリアルでは、基本的なスプレッドシートの作成から高度なフォーマットやデータベース統合まで、C# を使用して IronXL で Excel ファイルを構築する方法について説明しています。 レポートの作成、データのエクスポート(XLS または XLSX ファイル)、スプレッドシート生成の自動化など、どのような作業を行う場合でも、 .NETアプリケーションで Excel を操作するための基本的なテクニックを学ぶことができます。

C#でIronXLを使用してExcelファイルを生成する方法:画像1 - IronXL

Microsoft Officeを使わずにExcelファイルを生成する理由とは?

Office への依存性なしで Excel 生成機能を開発することは、重大なデプロイメントの課題を解決します。 サーバー環境には、通常、ライセンスコストとリソースオーバーヘッドのために Microsoft Office はインストールされていません。 各 Office インストールは大量のディスク空間とメモリを必要とし、クラウド展開やコンテナ化されたアプリケーションには非現実的です。

IronXLは独立して動作することで、これらの制約を解消します。 C# での Excel ファイル生成は、Windows、Linux、macOS、Docker コンテナ、または Azure App Services 上で変更なしに動作します。 このクロスプラットフォーム互換性により、 .NET Framework、 .NET Core、 .NET 10のいずれのアプリケーションをターゲットとする場合でも、一度コードを書けばどこにでもデプロイできます。

C#でIronXLを使用してExcelファイルを生成する方法:画像2 - クロスプラットフォーム

COM インタープのオーバーヘッドなしでパフォーマンスが劇的に改善されます。 従来の Office 自動化は各操作のために別々のプロセスインスタンスを作成し、メモリと CPU リソースを消費します。 IronXLは、あなたのアプリケーションのプロセス空間内で、すべてをメモリ内で処理するため、Excelファイルをプログラムで生成する際に実行が速く、リソース消費が少なくなります。

デプロイメントがシンプルになります。IronXL は単一の NuGet パッケージとして提供されます。 レジストリエントリも、COM登録も、Officeサービスパックのメンテナンスも不要です。 継続的インテグレーションパイプラインはスムーズに動作し、Dockerコンテナは軽量なままです。 このシンプルなアプローチにより、IronXL は人気のある選択肢となっており、開発者フォーラムでプロフェッショナルが Excel 自動化についての経験を共有しています。

一部の開発者は、Office Open XMLファイル構造を直接操作するために、MicrosoftのOpen XML Productivity Toolを依然として利用しています。 ただし、そのアプローチには XML スキーマや Open XML SDK インストールの詳細な知識を要するため、さらなる手動の努力が必要です。 IronXLはこのような複雑な問題を抽象化し、Excelをプログラムでより速く操作できるようにします。

C#でIronXLを使用してExcelファイルを生成する方法:画像3 - 特徴

C#プロジェクトにIronXLをインストールする方法

IronXLのインストールは、Visual StudioのNuGetパッケージマネージャーを使えばほんの数分で完了します。 ソリューションエクスプローラーでプロジェクトを右クリックし、" NuGetパッケージの管理"を選択します。"IronXL"を検索し、"インストール"をクリックします。 パッケージには、C# で Excel ファイルを生成するために必要なすべての依存関係が自動的に含まれます。

パッケージマネージャーコンソールまたは.NET CLIを使用してインストールするには、次のいずれかのコマンドを使用します。

PM > Install-Package IronXL.Excel

C#でIronXLを使用してExcelファイルを生成する方法:画像4 - インストール

ライブラリが準備完了していることを確認するために、以下の簡単なテストでインストールを検証してください。

using IronXL;
// Create an in-memory workbook
var workbook = WorkBook.Create();
Console.WriteLine("IronXL installed successfully!");

エラーなく実行されれば、 IronXLは使用準備完了です。 ライブラリはすべてのモダンな .NET バージョンをサポートし、既存のプロジェクトと互換性があります。 詳細なインストール手順やトラブルシューティングについては、NuGetの公式インストールドキュメントを参照してください。

出力

C#でIronXLを使用してExcelファイルを生成する方法:画像5 - コンソール出力

最初のExcelファイルはどのように作成すればよいですか?

IronXLでExcelファイルを作成する際は、まずWorkBookクラスを使用します。これは、すべてのExcel操作への入り口となります。 ライブラリは最新型のXLSXとレガシー形式のXLSの両方をサポートしているため、C#でExcelファイルを作成する際、さまざまな要件に合わせた柔軟性があります。

using IronXL;
// Create a new workbook (XLSX format by default)
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add metadata
workbook.Metadata.Title = "Monthly Sales Report";
workbook.Metadata.Author = "Sales Department";
workbook.Metadata.Comments = "Generated using IronXL";
// Create a worksheet
WorkSheet worksheet = workbook.CreateWorkSheet("January Sales");
// Add header row
worksheet["A1"].Value = "Date";
worksheet["B1"].Value = "Product";
worksheet["C1"].Value = "Quantity";
worksheet["D1"].Value = "Revenue";
// Add data rows
worksheet["A2"].Value = new DateTime(2024, 1, 15);
worksheet["B2"].Value = "Widget Pro";
worksheet["C2"].Value = 100;
worksheet["D2"].Value = 2500.00;
// Save the workbook
workbook.SaveAs("FirstExcelFile.xlsx");

このコードは Excel ファイル生成の主要な概念をいくつか示します。 WorkBook.Create()メソッドは、メモリ内で新しいExcelファイルを初期化します。 現代のExcel互換性にはXLSXを、レガシーサポートにはXLSを選択して、ExcelFileFormat列挙型を使用して形式を指定します。 Metadataプロパティを使用すると、Microsoftのドキュメントプロパティ基準に従って、Excelのファイルプロパティに表示されるドキュメント情報を埋め込むことができます。

CreateWorkSheet()メソッドは、指定された名前で新しいシートを追加します。 Excel のお馴染みのセル表記 (A1, B1 など) は、値を設定する際に直感的です。IronXL はデータ型変換を自動で処理し、日付、数値、テキストを明示的なキャストなしで認識します。 SaveAs()メソッドは、完全なExcelファイルをディスクに書き込みます。 さらなるワークシート操作については、Excelファイルの書き込みガイドをご覧ください。

出力

C#でIronXLを使用してExcelファイルを生成する方法:画像6 - 基本的なExcel出力

Excelのセルにデータを書き込むにはどうすればよいですか?

IronXL は、個々のセルの割り当てから一括範囲操作まで、Excel セルの入力に複数のアプローチを提供します。 これらのメソッドを理解することで、データシナリオに最適なアプローチを選択できるようになりますので、Excelファイルに書き込む際に役立ちます。

using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("Employees");
// Individual cell assignment
worksheet["A1"].Value = "Employee Name";
worksheet["A2"].Value = "John Smith";
worksheet["A3"].Value = "Jane Doe";
// Range assignment for multiple cells at once
worksheet["B1:B3"].Value = "Active";
// Using numeric indices (0-based row, 0-based column)
worksheet.SetCellValue(0, 2, "Department"); // C1
worksheet.SetCellValue(1, 2, "Sales");       // C2
worksheet.SetCellValue(2, 2, "Marketing");   // C3
// Array-based header population
string[] headers = { "ID", "Name", "Email", "Phone" };
for (int i = 0; i < headers.Length; i++)
{
    worksheet.SetCellValue(0, i, headers[i]);
}
// Working with different data types
worksheet["E1"].Value = "Salary";
worksheet["E2"].Value = 75000.50m;  // Decimal for currency
worksheet["E3"].Value = 82000.75m;
worksheet["F1"].Value = "Start Date";
worksheet["F2"].Value = new DateTime(2020, 3, 15);
worksheet["F3"].Value = new DateTime(2019, 7, 1);
worksheet["G1"].Value = "Full Time";
worksheet["G2"].Value = true;  // Boolean
worksheet["G3"].Value = true;
workbook.SaveAs("EmployeeData.xlsx");

このコードは IronXL の柔軟なセルアドレス指定を示します。 文字列表記 ("A1") は Excel ユーザーにとって自然に感じられ、数値インデックスによってループや動的な生成のためにプログラム的な制御が提供されます。 範囲指定("B1:B3"など)を使用すると、複数のセルに同じ値を効率的に設定できるため、列の初期化やデフォルト値の適用に最適です。

IronXLはさまざまなデータタイプを賢く処理します。小数は金融データの精度を保持し、DateTimeオブジェクトはExcelの日付として正しくフォーマットされ、ブール値はTRUE/FALSEとして表示されます。 この自動変換により手動のフォーマットコードが不要になり、データの整合性が保証されます。 大規模なデータセットの場合は、他のパターンについてデータインポートガイドを参照してください。

出力

C#でIronXLを使用してExcelファイルを生成する方法:画像7 - Excel出力

ExcelファイルにProfessional書式設定を適用するにはどうすればよいですか?

プロフェッショナルな Excel ファイルには、生データ以上が必要です。 IronXLのスタイリングAPIは、書式設定、色、視覚的な階層構造を通して、シンプルなスプレッドシートを洗練されたビジネス文書へと変貌させます。 セルの書式設定を適用して、スプレッドシートのあらゆる視覚的な側面を制御できます。

using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("Employees");
// Header formatting
var headerRange = worksheet["A1:D1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.Font.Height = 12;
headerRange.Style.SetBackgroundColor("#4472C4");
headerRange.Style.Font.Color = "#FFFFFF";
// Column width adjustment
worksheet.AutoSizeColumn(0); // Auto-fit column A
worksheet.GetColumn(1).Width = 20; // Set column B width
// Number formatting
var salaryColumn = worksheet["E2:E3"];
salaryColumn.FormatString = "$#,##0.00";
// Date formatting
var dateColumn = worksheet["F2:F3"];
dateColumn.FormatString = "MM/dd/yyyy";
// Cell borders
var dataRange = worksheet["A1:G3"];
dataRange.Style.TopBorder.Type = IronXL.Styles.BorderType.Thin;
dataRange.Style.BottomBorder.Type = IronXL.Styles.BorderType.Thin;
dataRange.Style.LeftBorder.Type = IronXL.Styles.BorderType.Thin;
dataRange.Style.RightBorder.Type = IronXL.Styles.BorderType.Thin;
dataRange.Style.TopBorder.Color = "#000000";
dataRange.Style.BottomBorder.Color = "#000000";
// Text alignment
worksheet["A1:G1"].Style.HorizontalAlignment = IronXL.Styles.HorizontalAlignment.Center;
// Alternating row colors for readability (banded rows)
for (int row = 2; row <= 10; row++)
{
    if (row % 2 == 0)
    {
        worksheet[$"A{row}:G{row}"].Style.SetBackgroundColor("#F2F2F2");
    }
}
workbook.SaveAs("FormattedReport.xlsx");

この書式設定コードは、ビジネス基準を満たすProfessional外観を作り出します。 背景色のついた太字のヘッダーは視覚的な階層を確立します。 SetBackgroundColor()メソッドは16進カラーコードを受け入れ、カラー配色に対する正確な制御を提供します。 フォントのプロパティには、サイズ、色、太字、斜体、下線などのオプションが含まれており、これらはすべて、企業のブランディングガイドラインに準拠したExcelファイルを作成するために不可欠です。

列幅の調整は、テキストの切り捨てを防ぎます。 GetColumn().Widthは正確な制御を提供します。 数値の書式設定には、Excelの書式コードが使用されます。たとえば、"$#,##0.00"は、千の位の区切り記号と小数点以下2桁で通貨を表示します。 日付の書式設定は、Microsoft の数値書式コードリファレンスに記載されている標準の Excel 日付書式文字列を使用して、同様のパターンに従います。

罫線はデータの境界を定義し、可読性を向上させます。 BorderType列挙型は、薄い、中間、太い、点線、破線などのさまざまなスタイルを提供します。 交互の行の色、いわゆる "バンド付き行" は、広いデータセットを横断して情報を追跡するために役立ちます。 セルの結合やその他のレイアウト機能について詳しくは、セル結合ガイドを参照してください。

出力

C#でIronXLを使用してExcelファイルを生成する方法:画像8 - フォーマットされたExcel出力

Excelの数式をプログラムで利用するにはどうすればよいですか?

Excel フォーミュラは、自動計算でスプレッドシートに生命を吹き込みます。 IronXL はフォーミュラの作成と評価をサポートしており、動的なスプレッドシートを自動的に更新できます。

using IronXL;
var workbook = WorkBook.Create();
// Create a budget worksheet
WorkSheet budget = workbook.CreateWorkSheet("Q1 Budget");
// Headers
budget["A1"].Value = "Category";
budget["B1"].Value = "January";
budget["C1"].Value = "February";
budget["D1"].Value = "March";
budget["E1"].Value = "Q1 Total";
// Budget categories and values
string[] categories = { "Salaries", "Marketing", "Operations", "Equipment", "Training" };
decimal[,] monthlyBudgets = {
    { 50000, 52000, 51000 },
    { 15000, 18000, 20000 },
    { 8000, 8500, 9000 },
    { 12000, 5000, 7000 },
    { 3000, 3500, 4000 }
};
// Populate data and add row total formulas
for (int i = 0; i < categories.Length; i++)
{
    budget[$"A{i + 2}"].Value = categories[i];
    budget[$"B{i + 2}"].Value = monthlyBudgets[i, 0];
    budget[$"C{i + 2}"].Value = monthlyBudgets[i, 1];
    budget[$"D{i + 2}"].Value = monthlyBudgets[i, 2];
    budget[$"E{i + 2}"].Formula = $"=SUM(B{i + 2}:D{i + 2})";
}
// Monthly totals row
budget["A7"].Value = "Monthly Total";
budget["B7"].Formula = "=SUM(B2:B6)";
budget["C7"].Formula = "=SUM(C2:C6)";
budget["D7"].Formula = "=SUM(D2:D6)";
budget["E7"].Formula = "=SUM(E2:E6)";
// Calculate percentages
budget["A9"].Value = "Marketing %";
budget["B9"].Formula = "=B3/B7*100";
// Average calculation
budget["A10"].Value = "Average Spending";
budget["B10"].Formula = "=AVERAGE(B2:B6)";
// Evaluate all formulas before saving
workbook.EvaluateAll();
workbook.SaveAs("Budget.xlsx");

この予算の例は、フォーミュラの実際の応用を示しています。 Formulaプロパティは、等号で始まる標準のExcel数式構文を受け入れます。 IronXLは一般的な関数をサポートしています:SUM、AVERAGE、COUNT、MAX、MIN、その他多数。 フォーミュラ内のセル参照は Excel と全く同様に、相対参照と絶対参照に対応しています。

EvaluateAll()メソッドはすべての数式を処理し、ワークブック全体で計算された値を更新します。 これにより、Excelでファイルを開いたときに数式が正しく表示されるようになります。 評価を行わない場合、Excelはユーザーが再計算をトリガーするまで数式テキストを表示します。 数式結果の読み取りについて詳しくは、Excelファイルドキュメントの読み込みを参照してください。

出力

C#でIronXLを使用してExcelファイルを生成する方法:画像9 - 数式を使用したExcel出力

データベースデータをExcelにエクスポートするにはどうすればよいですか?

現実的なアプリケーションは、レポートや分析のためにデータベースデータを Excel にエクスポートすることが多々あります。 IronXLは、組み込みのDataTableサポートにより、このプロセスを簡単にし、C#アプリケーションからExcelをエクスポートする際の手動フィールドマッピングの必要性を排除します。

using System.Data;
using IronXL;

// Simulate database retrieval (replace with actual database code)
DataTable GetSalesData()
{
    DataTable dt = new DataTable("Sales");
    dt.Columns.Add("OrderID", typeof(int));
    dt.Columns.Add("CustomerName", typeof(string));
    dt.Columns.Add("Product", typeof(string));
    dt.Columns.Add("Quantity", typeof(int));
    dt.Columns.Add("UnitPrice", typeof(decimal));
    dt.Columns.Add("OrderDate", typeof(DateTime));
    dt.Rows.Add(1001, "ABC Corp", "Widget Pro", 50, 25.99m, DateTime.Now.AddDays(-5));
    dt.Rows.Add(1002, "XYZ Ltd", "Widget Basic", 100, 15.99m, DateTime.Now.AddDays(-4));
    dt.Rows.Add(1003, "ABC Corp", "Widget Premium", 25, 45.99m, DateTime.Now.AddDays(-3));
    dt.Rows.Add(1004, "Tech Solutions", "Widget Pro", 75, 25.99m, DateTime.Now.AddDays(-2));
    dt.Rows.Add(1005, "XYZ Ltd", "Widget Premium", 30, 45.99m, DateTime.Now.AddDays(-1));
    return dt;
}

// Export to Excel
WorkBook reportWorkbook = WorkBook.Create();
WorkSheet reportSheet = reportWorkbook.CreateWorkSheet("Sales Report");
DataTable salesData = GetSalesData();

// Title row
reportSheet["A1"].Value = "Order Report - " + DateTime.Now.ToString("MMMM yyyy");
reportSheet.Merge("A1:F1");
reportSheet["A1"].Style.Font.Bold = true;
reportSheet["A1"].Style.Font.Height = 14;

// Headers
int headerRow = 3;
for (int col = 0; col < salesData.Columns.Count; col++)
{
    reportSheet.SetCellValue(headerRow - 1, col, salesData.Columns[col].ColumnName);
}
var headers = reportSheet[$"A{headerRow}:F{headerRow}"];
headers.Style.Font.Bold = true;
headers.Style.SetBackgroundColor("#D9E1F2");

// Data rows
for (int row = 0; row < salesData.Rows.Count; row++)
{
    for (int col = 0; col < salesData.Columns.Count; col++)
    {
        reportSheet.SetCellValue(row + headerRow, col, salesData.Rows[row][col]);
    }
    reportSheet[$"G{row + headerRow + 1}"].Formula = $"=D{row + headerRow + 1}*E{row + headerRow + 1}";
}

// Total header
reportSheet["G3"].Value = "Total";
reportSheet["G3"].Style.Font.Bold = true;
reportSheet["G3"].Style.SetBackgroundColor("#D9E1F2");
// Format currency and date columns
reportSheet[$"E{headerRow + 1}:E{headerRow + salesData.Rows.Count}"].FormatString = "$#,##0.00";
reportSheet[$"G{headerRow + 1}:G{headerRow + salesData.Rows.Count}"].FormatString = "$#,##0.00";
reportSheet[$"F{headerRow + 1}:F{headerRow + salesData.Rows.Count}"].FormatString = "MM/dd/yyyy";

// Summary section
int summaryRow = headerRow + salesData.Rows.Count + 2;
reportSheet[$"A{summaryRow}"].Value = "Summary";
reportSheet[$"A{summaryRow}"].Style.Font.Bold = true;
reportSheet[$"A{summaryRow + 1}"].Value = "Total Orders:";
reportSheet[$"B{summaryRow + 1}"].Formula = $"=COUNTA(A{headerRow + 1}:A{headerRow + salesData.Rows.Count})";
reportSheet[$"A{summaryRow + 2}"].Value = "Total Revenue:";
reportSheet[$"B{summaryRow + 2}"].Formula = $"=SUM(G{headerRow + 1}:G{headerRow + salesData.Rows.Count})";
reportSheet[$"B{summaryRow + 2}"].FormatString = "$#,##0.00";

for (int col = 0; col <= 6; col++) { reportSheet.AutoSizeColumn(col); }
reportWorkbook.EvaluateAll();
reportWorkbook.SaveAs("DatabaseExport.xlsx");

この例は、データベースからExcelへの完全なワークフローを示しています。 DataTableはデータベースの取得をシミュレートします。運用環境では、これをEntity Framework、Dapper、またはADO.NETを使用した実際のデータベースクエリに置き換えてください。 手動のマッピングアプローチは、Microsoft のデータエクスポートのベストプラクティスとして推奨されるように、書式設定とレイアウトに対する完全な制御を提供します。

コードはタイトル、フォーマットされたヘッダー、データ行でプロフェッショナルなレポートを作成します。 フォーミュラ列は、各行のトータルを動的に計算します。 概要セクションでは、Excelの数式を使用して注文数をカウントし、収益を合計することで、データが変更された場合にこれらの値が更新されるようにしています。 DataSetsや大規模なデータ構造を扱うには、ExcelからDataSetへの変換ガイドを参照してください。

出力

C#でIronXLを使用してExcelファイルを生成する方法:画像10 - データベースエクスポートからExcel出力

Excelレポートを実運用に導入する必要がありますか? IronXLの真の可能性を最大限に引き出し、本番環境への導入を実現するには、ライセンスを取得してください

複数のワークシートをどのように扱っていますか?

複雑な Excel ファイルはしばしば関連データを整理するために複数のワークシートを必要とします。 IronXL は、作成、アクセス、ワークシートの整理のための直感的なメソッドで複数シートの管理を簡素化します。 ワークブックシートを開いて管理することは、数行のコードで可能です。

using IronXL;
WorkBook companyReport = WorkBook.Create();
// Create department sheets
WorkSheet salesSheet = companyReport.CreateWorkSheet("Sales");
WorkSheet inventorySheet = companyReport.CreateWorkSheet("Inventory");
WorkSheet summarySheet = companyReport.CreateWorkSheet("Summary");

// Populate Sales sheet
salesSheet["A1"].Value = "Sales Dashboard";
salesSheet["A3"].Value = "Region";
salesSheet["B3"].Value = "Q1 Sales";
salesSheet["C3"].Value = "Q2 Sales";
string[] regions = { "North", "South", "East", "West" };
decimal[] q1Sales = { 250000, 180000, 220000, 195000 };
decimal[] q2Sales = { 275000, 195000, 240000, 210000 };
for (int i = 0; i < regions.Length; i++)
{
    salesSheet[$"A{i + 4}"].Value = regions[i];
    salesSheet[$"B{i + 4}"].Value = q1Sales[i];
    salesSheet[$"C{i + 4}"].Value = q2Sales[i];
}

// Populate Inventory sheet
inventorySheet["A1"].Value = "Inventory Status";
string[] products = { "Widget A", "Widget B", "Widget C" };
int[] stock = { 150, 45, 200 };
int[] reorderPoint = { 100, 50, 75 };
for (int i = 0; i < products.Length; i++)
{
    inventorySheet[$"A{i + 4}"].Value = products[i];
    inventorySheet[$"B{i + 4}"].Value = stock[i];
    inventorySheet[$"C{i + 4}"].Value = reorderPoint[i];
    string status = stock[i] <= reorderPoint[i] ? "REORDER" : "OK";
    inventorySheet[$"D{i + 4}"].Value = status;
    if (status == "REORDER")
        inventorySheet[$"D{i + 4}"].Style.Font.Color = "#FF0000";
}

// Summary sheet with cross-sheet formulas
summarySheet["A1"].Value = "Company Overview";
summarySheet["A4"].Value = "Total Q1 Sales";
summarySheet["B4"].Formula = "=SUM(Sales!B4:B7)";
summarySheet["A5"].Value = "Total Q2 Sales";
summarySheet["B5"].Formula = "=SUM(Sales!C4:C7)";
summarySheet["A6"].Value = "Products Need Reorder";
summarySheet["B6"].Formula = "=COUNTIF(Inventory!D4:D6,\"REORDER\")";

// Apply consistent formatting across all sheets
foreach (WorkSheet sheet in companyReport.WorkSheets)
{
    sheet["A1"].Style.Font.Bold = true;
    sheet["A1"].Style.Font.Height = 14;
}
companyReport.SaveAs("CompanyReport.xlsx");

この例は、完全なマルチシートレポートを作成します。 各ワークシートは、売上データ、在庫追跡、概要表示など、それぞれ特定の目的のために設計されています。 サマリシートは、クロスシートフォーミュラを使用して主要指標を統合します。 シート参照構文に注目してください。"Sales!B4:B7"は、SalesシートのセルB4からB7までを指します。

在庫シートは条件付きロジックを示し、在庫が少ないアイテムを赤色で塗りつぶして直ちに注意を引きます。 foreachループは、すべてのシートに一貫したフォーマットを適用し、ワークブック全体にわたってプロフェッショナルな外観を維持します。 Excelではシート名がタブとして表示されるため、ユーザーは異なるデータビュー間を簡単に移動できます。

C#でExcelファイルを生成する際のベストプラクティスは何ですか?

C# での効率的な Excel ファイル生成には、メモリ使用量、エラーハンドリング、デプロイメントへの思慮深いアプローチが必要です。 これらのプラクティスは、Excel スプレッドシートをプログラム的に作成する際に、アプリケーションが効果的にスケールし、信頼性を維持することを保証します。

メモリ管理は、大きなファイルで重要になります。 データセット全体を一度に読み込むのではなく、データをバッチ処理する。 以下のパターンは、大量のエクスポートにおけるメモリ使用量を予測可能なものにします。

using IronXL;
WorkBook workbook = WorkBook.Create();
WorkSheet sheet = workbook.CreateWorkSheet("Data");
int rowsPerBatch = 1000;
int currentRow = 2;
sheet["A1"].Value = "ID";
sheet["B1"].Value = "Name";
sheet["C1"].Value = "Value";
// Process records in manageable batches
foreach (var batch in GetDataInBatches(rowsPerBatch))
{
    foreach (var record in batch)
    {
        sheet[$"A{currentRow}"].Value = record.Id;
        sheet[$"B{currentRow}"].Value = record.Name;
        sheet[$"C{currentRow}"].Value = record.Value;
        currentRow++;
    }
}
workbook.SaveAs("LargeDataset.xlsx");

Webアプリケーションの場合、一時ファイルをディスクに書き込むのではなく、メモリ上にExcelファイルを生成し、ユーザーに直接ストリーミング配信する。 クラッシュを防ぎ、有益なフィードバックを提供するために、生成ロジックは必ずエラー処理で囲んでください。

// ASP.NET Core controller action with error handling
IActionResult DownloadExcel()
{
    try
    {
        WorkBook workbook = WorkBook.Create();
        WorkSheet sheet = workbook.CreateWorkSheet("Report");
        sheet["A1"].Value = "Report Data";
        // Populate report data here...
        var stream = new MemoryStream();
        workbook.SaveAs(stream);
        stream.Position = 0;
        return File(stream,
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "report.xlsx");
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Excel generation failed: {ex.Message}");
        return StatusCode(500, "Failed to generate Excel file.");
    }
}

以下の表は、主要なベストプラクティスとその適用時期をまとめたものです。

IronXLにおけるC#でのExcel生成のベストプラクティス
シナリオ推奨されるアプローチ利点
Large datasets (>10,000 rows)チャンク書き込みによるバッチ処理メモリ使用量を削減
ウェブアプリケーションのダウンロード一時ファイルの代わりにMemoryStreamを使用するディスクI/Oがないため、応答速度が向上します。
本番環境への展開有効なIronXLライセンスキーを含めてください生成されたファイルには透かしは入りません。
通貨と日付FormatStringプロパティを使用するExcelでの正しいロケール表示
動的レポートSaveAs() の前に EvaluateAll() を呼び出してください。数式は計算値を示します

IronXL は、昇格された権限なしで制限された環境で動作し、共有ホスティングおよびコンテナ化されたデプロイメントに適しています。 IronXLのライセンスファイルをデプロイメントパッケージに含め、アプリケーションが必要な一時ファイル操作のための書き込み権限を持っていることを確認してください。 導入に関する詳細なガイダンスについては、 IronXLの機能概要および完全なAPIドキュメントを参照してください。

ここから先、どこへ行けるだろうか?

IronXL は、Excel ファイル生成を C# での複雑なチャレンジから簡単なコーディングに変えます。 あなたは、Microsoft Officeに依存することなく、ワークブックの作成、セルへのデータ入力、書式設定の適用、数式の使用、データベースデータの書き出し、複数のワークシートの管理といった方法を習得しました。 これらの手法は、 .NET 10 をターゲットとする Windows、Linux、およびクラウドプラットフォーム全体で一貫して機能します。

より深く学ぶためには、既存のExcelファイルを読み取って修正するためのIronXLハウツーガイドを探るか、制作を開始するための無料ライセンスページを参照してください。 プロジェクトの要件と規模に合ったライセンスオプションをご覧ください。

Curtis Chau
テクニカルライター

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

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。