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

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

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

How to Generate Excel File in C# Using IronXL: Image 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 8/9 アプリケーションを対象にしてどこでもデプロイできます。

How to Generate Excel File in C# Using IronXL: Image 2 - Cross Platform.

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をプログラムでより速く操作できるようにします。

How to Generate Excel File in C# Using IronXL: Image 3 - Features.

C#プロジェクトにIronXLをインストールするには? IronXLのインストールは、ソリューション・エクスプローラーのNuGetパッケージ・マネージャーから一瞬で完了します。 Visual Studio でプロジェクトを右クリックし、"NuGet パッケージの管理"を選択します。"IronXL.Excel"を検索し、インストールをクリックします。 パッケージには、C# で Excel ファイルを生成するために必要なすべての依存関係が自動的に含まれます。 あるいは、パッケージマネージャーコンソールを使用します: ```shell Install-Package IronXL.Excel ``` [How to Generate Excel File in C# Using IronXL: Image 4 - インストール](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-4.webp). 最新のC#プロジェクトで作業している.NET CLIユーザー向け: ```shell dotnet add package IronXL.Excel ``` プログラムでExcelファイルを作成する簡単なテストで、インストールを確認してください: ```csharp using IronXL; // Create a new Excel workbook var workbook = WorkBook.Create(); Console.WriteLine("IronXL installed successfully!"); ``` このコードはメモリ内のワークブックオブジェクトを作成します。 エラーなく実行されれば、IronXL が使用準備完了であることを示しています。 ライブラリはすべてのモダンな .NET バージョンをサポートし、既存のプロジェクトと互換性があります。 詳細なインストールガイドとトラブルシューティングについては、公式ドキュメントを参照してください。 始める準備はできましたか? 今すぐ IronXL をダウンロードして、数分で Excel ファイルを生成し始めましょう。 ### 出力 [How to Generate Excel File in C# Using IronXL: Image 5 - コンソール出力](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-5.webp). ## 初めての Excel ファイルを作成する方法? IronXLによるExcelファイルの作成は[WorkBookクラス](/object-reference/api/IronXL.WorkBook.html)から始まります。 ライブラリは、モダンな XLSX 形式とレガシーな XLS 形式の両方をサポートしており、C# で Excel ファイルを生成する際のさまざまな要件に柔軟性をもたらします。 ```cs 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 some basic data 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 ファイルをメモリ内に初期化します。 フォーマットは、`ExcelFileFormat`列挙型を使用して指定します。最新のExcelとの互換性を確保する場合はXLSXを、レガシーサポートを確保する場合はXLSを選択します。 `Metadata` プロパティでは、[Microsoft のドキュメント プロパティ標準](https://support.microsoft.com/en-us/office/view-or-change-the-properties-for-an-office-file-21d604c2-481e-4379-8e54-1dd4622c6b75)に準拠し、Excel のファイル プロパティに表示されるドキュメント情報を埋め込むことができます。 `CreateWorkSheet()`メソッドは、指定された名前の新しいシートを追加します。 Excel のお馴染みのセル表記 (A1, B1 など) は、値を設定する際に直感的です。IronXL はデータ型変換を自動で処理し、日付、数値、テキストを明示的なキャストなしで認識します。 `SaveAs()`メソッドは、完全なExcelファイルをディスクに書き込みます。 さらなるワークシート操作については、ワークシート管理のチュートリアルをご覧ください。 ### 出力 [How to Generate Excel File in C# Using IronXL: Image 6 - Basic Excel Output](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-6.webp). ## Excel セルにデータを書き込む方法? IronXL は、個々のセルの割り当てから一括範囲操作まで、Excel セルの入力に複数のアプローチを提供します。 これらのメソッドを理解することで、データシナリオに最適なアプローチを選択できます。 ```cs WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX); // Create a worksheet 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 worksheet["B1:B3"].Value = "Active"; // Using numeric indices (0-based) worksheet.SetCellValue(0, 2, "Department"); // C1 worksheet.SetCellValue(1, 2, "Sales"); // C2 worksheet.SetCellValue(2, 2, "Marketing"); // C3 // Array-based 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("FirstExcelFile.xlsx"); ``` このコードは IronXL の柔軟なセルアドレス指定を示します。 文字列表記 ("A1") は Excel ユーザーにとって自然に感じられ、数値インデックスによってループや動的な生成のためにプログラム的な制御が提供されます。 範囲の割り当て ("B1:B3") は複数のセルを同じ値に効率的に設定し、列の初期化やデフォルト値の適用に最適です。 IronXL はさまざまなデータ型を賢く処理します。小数は財務データ用に精度を維持し、DateTime オブジェクトは Excel の日付として適切にフォーマットされ、ブール値は TRUE/FALSE と表示されます。 この自動変換により手動のフォーマットコードが不要になり、データの整合性が保証されます。 ### 出力 [How to Generate Excel File in C# Using IronXL: Image 7 - Excel Output](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-7.webp). より大きなデータセットのために、このパターンを検討してください: ```cs // Populate from a data source var employees = GetEmployeeData(); // Your data source for (int row = 0; row < employees.Count; row++) { worksheet[$"A{row + 2}"].Value = employees[row].Id; worksheet[$"B{row + 2}"].Value = employees[row].Name; worksheet[$"C{row + 2}"].Value = employees[row].Department; worksheet[$"D{row + 2}"].Value = employees[row].Salary; } ``` このアプローチはデータコレクションを介して繰り返し、それぞれのプロパティを対応する列にマッピングします。 文字列補間(`$"A{row + 2}"`)は、ヘッダを保持するために2行目から動的にセルアドレスを生成します。 ## プロフェッショナルなフォーマットを適用する方法? プロフェッショナルな Excel ファイルには、生データ以上が必要です。 IronXLの[スタイリングAPI](/how-to/cell-font-size/)は、C#でExcelファイルを生成する際に、書式、色、視覚的な階層を通して、プレーンなスプレッドシートを洗練されたビジネス文書に変換します。 ```cs using IronXL; WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX); // Create a worksheet 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 to 20 characters // 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; // To set border color, use: dataRange.Style.TopBorder.Color = "#000000"; dataRange.Style.BottomBorder.Color = "#000000"; dataRange.Style.LeftBorder.Color = "#000000"; dataRange.Style.RightBorder.Color = "#000000"; // Text alignment worksheet["A1:G1"].Style.HorizontalAlignment = IronXL.Styles.HorizontalAlignment.Center; // Alternating row colors for readability for (int row = 2; row <= 3; row++) { if (row % 2 == 0) { worksheet[$"A{row}:G{row}"].Style.SetBackgroundColor("#F2F2F2"); } } ``` このフォーマットコードは、企業標準に合致するプロフェッショナルな外観を作成します。 背景色のついた太字のヘッダーは視覚的な階層を確立します。 `SetBackgroundColor()` メソッドは 16 進色コードを受け入れ、カラースキームへの正確な制御を提供します。 フォントプロパティには、サイズ、色、太字、斜体、下線オプションが含まれており、企業のブランドガイドラインに従う Excel ファイルの作成には必須です。 列幅の調整は、テキストの切り捨てを防ぎます。 `AutoSizeColumn()` はコンテンツに自動的にフィットし、`SetColumnWidth()` は正確な制御を提供します。 数値の書式設定は Excel のフォーマットコードを使用します。 たとえば、"$#,##0.00" は千単位の桁区切り記号と小数点以下 2 桁で通貨を表示します。 日付の書式設定も類似のパターンに従い、[Microsoft の Excel 仕様](https://support.microsoft.com/en-us/office/number-format-codes-5026bbd6-04bc-48cd-bf33-80f18b4eae68)にドキュメントとして記載された Excel の日付フォーマット文字列を使用します。 罫線はデータの境界を定義し、可読性を向上させます。 BorderType 列挙型は、細線、中線、太線、点線、破線といったさまざまなスタイルを提供します。 配置オプションはヘッダーを中央に配置し、数字を右寄せにして、スプレッドシートの慣例に従います。 交互の行の色、いわゆる "バンド付き行" は、広いデータセットを横断して情報を追跡するために役立ちます。 フォーマットされた Excel データを作成するための上級フォーマットについては、セルスタイリングガイドをご覧ください。 ### 出力 [How to Generate Excel File in C# Using IronXL: Image 8 - フォーマットされたExcel出力](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-8.webp). ## Excel フォーミュラをプログラム的に使用する方法? Excel フォーミュラは、自動計算でスプレッドシートに生命を吹き込みます。 IronXL はフォーミュラの作成と評価をサポートしており、動的なスプレッドシートを自動的に更新できます。 ```cs 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 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]; // Row total formula 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"; budget["C9"].Formula = "=C3/C7*100"; budget["D9"].Formula = "=D3/D7*100"; // Average calculation budget["A10"].Value = "Average Spending"; budget["B10"].Formula = "=AVERAGE(B2:B6)"; // Evaluate all formulas workbook.EvaluateAll(); workbook.SaveAs("Budget.xlsx"); ``` この予算の例は、フォーミュラの実際の応用を示しています。 Formula プロパティは、等号で始まる標準の Excel フォーミュラ構文を受け入れます。 IronXLは一般的な関数をサポートしています:SUM、AVERAGE、COUNT、MAX、MIN、その他多数。 フォーミュラ内のセル参照は Excel と全く同様に、相対参照と絶対参照に対応しています。 行の合計フォーミュラ (`=SUM(B{i + 2}:D{i + 2})`) は各カテゴリの四半期ごとの合計を計算します。 文字列補間は各行の適切なセル参照を動的に生成します。 月ごとの合計は全列を合算し、割合計算は特定のセルを合計で除算します。 `EvaluateAll()` メソッドはすべてのフォーミュラを処理し、ワークブック全体で計算値を更新します。 これにより、Excel で開かれたときにフォーミュラが結果を表示することが保証されます。 評価なしでは、Excel は再計算をユーザーがトリガするまでフォーミュラを表示します。 ### 出力 [How to Generate Excel File in C# Using IronXL: Image 9 - Excel Output using Formulas](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-9.webp). ## データベースから Excel へのデータエクスポート方法? 現実的なアプリケーションは、レポートや分析のためにデータベースデータを Excel にエクスポートすることが多々あります。 IronXLは組み込みの`DataTable`サポートによってこのプロセスを合理化し、C#アプリケーションからExcelファイルを生成する際の手作業によるフィールドマッピングを不要にします。 ```cs using System; using System.Data; using System.Data.SqlClient; // Simulate database retrieval (replace with your 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)); // Sample data (normally from database) 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"); // Get data from database DataTable salesData = GetSalesData(); // Method 1: Manual mapping with formatting 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); } // Format headers 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]); } // Add total column with formula reportSheet[$"G{row + headerRow + 1}"].Formula = $"=D{row + headerRow + 1}*E{row + headerRow + 1}"; } // Add total header and format reportSheet["G3"].Value = "Total"; reportSheet["G3"].Style.Font.Bold = true; reportSheet["G3"].Style.SetBackgroundColor("#D9E1F2"); // Format currency 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"; // Format date column reportSheet[$"F{headerRow + 1}:F{headerRow + salesData.Rows.Count}"].FormatString = "MM/dd/yyyy"; // Add 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"; // Auto-fit columns for (int col = 0; col <= 6; col++) { reportSheet.AutoSizeColumn(col); } // Evaluate formulas and save reportWorkbook.EvaluateAll(); reportWorkbook.SaveAs("DatabaseExport.xlsx"); ``` この包括的な例では、C#でExcelファイルを生成するための完全なデータベースからExcelへのワークフローを示します。 `DataTable`は、データベースの検索をシミュレートしています。本番では、Entity Framework、Dapper、またはADO.NETを使用した実際のデータベースクエリに置き換えてください。 手動のマッピングアプローチは、[Microsoft のデータエクスポートのベストプラクティス](https://docs.microsoft.com/en-us/office/dev/add-ins/excel/excel-add-ins-data-validation)として推奨されるように、書式設定とレイアウトに対する完全な制御を提供します。 コードはタイトル、フォーマットされたヘッダー、データ行でプロフェッショナルなレポートを作成します。 フォーミュラ列は、各行のトータルを動的に計算します。 サマリーセクションは、データが変更された場合にこれらの値が更新されるように、注文の件数および収益をカウントするために Excel フォーミュラを利用します。 通貨と日付のフォーマットはビジネス文書の標準に従い、全ての内容が適切に表示されるように列幅が自動調整されます。 大規模データセットを扱うためのパフォーマンス最適化ガイドをお調べください。 ### 出力 [How to Generate Excel File in C# Using IronXL: Image 10 - Database Export to Excel Output](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-10.webp). Excel レポートを効率化したいですか? [ライセンスを取得する](/licensing/)ことで、IronXLの本番環境での可能性を最大限に引き出すことができます。 ## 複数のワークシートを管理する方法? 複雑な Excel ファイルはしばしば関連データを整理するために複数のワークシートを必要とします。 IronXL は、作成、アクセス、ワークシートの整理のための直感的なメソッドで複数シートの管理を簡素化します。 ```cs // Create a multi-sheet workbook WorkBook companyReport = WorkBook.Create(); // Create department sheets WorkSheet salesSheet = companyReport.CreateWorkSheet("Sales"); WorkSheet inventorySheet = companyReport.CreateWorkSheet("Inventory"); WorkSheet hrSheet = companyReport.CreateWorkSheet("HR Metrics"); // 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"; inventorySheet["A3"].Value = "Product"; inventorySheet["B3"].Value = "Stock Level"; inventorySheet["C3"].Value = "Reorder Point"; inventorySheet["D3"].Value = "Status"; // Add inventory data with conditional 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]; // Status based on stock level string status = stock[i] <= reorderPoint[i] ? "REORDER" : "OK"; inventorySheet[$"D{i + 4}"].Value = status; // Color code status if (status == "REORDER") { inventorySheet[$"D{i + 4}"].Style.Font.Color = "#FF0000"; } } // Create summary sheet referencing other sheets WorkSheet summarySheet = companyReport.CreateWorkSheet("Summary"); summarySheet["A1"].Value = "Company Overview"; summarySheet["A3"].Value = "Metric"; summarySheet["B3"].Value = "Value"; 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\")"; // Format all sheets consistently foreach (WorkSheet sheet in companyReport.WorkSheets) { // Format headers sheet["A1"].Style.Font.Bold = true; sheet["A1"].Style.Font.Height = 14; var headerRow = sheet["A3:D3"]; headerRow.Style.Font.Bold = true; headerRow.Style.SetBackgroundColor("#E7E6E6"); } // Save multi-sheet workbook companyReport.SaveAs("CompanyReport.xlsx"); ``` この例は、完全なマルチシートレポートを作成します。 各ワークシートは特定の目的に役立ちます: 販売データ、在庫管理、人事指標。 サマリシートは、クロスシートフォーミュラを使用して主要指標を統合します。 Sales!B4:B7 "は、SalesシートのセルB4からB7を指しています。 在庫シートは条件付きロジックを示し、在庫が少ないアイテムを赤色で塗りつぶして直ちに注意を引きます。 `foreach`ループは、すべてのシートで一貫した書式を適用し、ワークブック全体でプロフェッショナルな外観を維持します。 シート名は Excel のタブとして表示され、ユーザーが簡単に異なるデータビュー間をナビゲートできるようにします。 ## Excel 生成のためのベストプラクティスは何ですか? C# での効率的な Excel ファイル生成には、メモリ使用量、エラーハンドリング、デプロイメントへの思慮深いアプローチが必要です。 これらのプラクティスは、Excel スプレッドシートをプログラム的に作成する際に、アプリケーションが効果的にスケールし、信頼性を維持することを保証します。 メモリ管理は、大きなファイルで重要になります。 すべてのデータセットをメモリにロードするのではなく、データをチャンク単位で処理します。 ```cs // Process large datasets efficiently public void ExportLargeDataset(string filename) { WorkBook workbook = WorkBook.Create(); WorkSheet sheet = workbook.CreateWorkSheet("Data"); int rowsPerBatch = 1000; int currentRow = 1; // Process in 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(filename); } ``` エラーハンドリングはアプリケーションのクラッシュを防ぎ、Excel ファイルを生成する際に意味のあるフィードバックを提供します。 ```cs try { WorkBook workbook = WorkBook.Create(); // Excel generation code workbook.SaveAs("output.xlsx"); } catch (Exception ex) { // Log the error Console.WriteLine($"Excel generation failed: {ex.Message}"); // Implement appropriate recovery or notification } ``` Web アプリケーションでは、Excel ファイルをメモリ内で生成し、ユーザーにストリームします。 ```cs // ASP.NET Core example public IActionResult DownloadExcel() { WorkBook workbook = GenerateReport(); var stream = new MemoryStream(); workbook.SaveAs(stream); stream.Position = 0; return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx"); } ``` デプロイメントの考慮は、スムーズな本番運用を保証します。 IronXL は、昇格された権限なしで制限された環境で動作し、共有ホスティングおよびコンテナ化されたデプロイメントに適しています。 IronXL ライセンスファイルをデプロイメントパッケージに含め、必要に応じて一時ファイル操作のための書き込み権限があることを確認します。 追加のデプロイメント ガイダンスについては、[デプロイメント ドキュメント](/docs/)を参照してください。 ## 結論 IronXL は、Excel ファイル生成を C# での複雑なチャレンジから簡単なコーディングに変えます。 ワークブック作成、セルの入力、フォーマットの適用、フォーミュラの使用、データベースデータのエクスポートを、Microsoft Office の依存なしで学びました。 プログラムによって Excel ファイルを生成するこれらの技術は、Windows、Linux、およびクラウドプラットフォーム全体で一貫して動作します。 C# アプリケーションで Excel を生成する準備ができましたか? [無料トライアルを開始](trial-license)するか、高度な機能については包括的な[APIドキュメント](/object-reference/api/)を参照してください。 本番展開には、プロジェクト要件に合ったライセンスオプションを確認してください。 [How to Generate Excel File in C# Using IronXL: Image 11 - Licensing](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-11.webp).

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

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

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