IRONXLの使用 C#でIronXLを使用してExcelファイルを生成する方法 カーティス・チャウ 更新日:2026年1月5日 IronXL をダウンロード NuGet ダウンロード DLL ダウンロード 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る 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 ファイルを生成するために必要なすべての依存関係が自動的に含まれます。 あるいは、パッケージマネージャーコンソールを使用します: Install-Package IronXL.Excel How to Generate Excel File in C# Using IronXL: Image 4 - インストール. 最新のC#プロジェクトで作業している.NET CLIユーザー向け: dotnet add package IronXL.Excel dotnet add package IronXL.Excel SHELL プログラムでExcelファイルを作成する簡単なテストで、インストールを確認してください: using IronXL; // Create a new Excel workbook var workbook = WorkBook.Create(); Console.WriteLine("IronXL installed successfully!"); using IronXL; // Create a new Excel workbook var workbook = WorkBook.Create(); Console.WriteLine("IronXL installed successfully!"); Imports IronXL ' Create a new Excel workbook Dim workbook = WorkBook.Create() Console.WriteLine("IronXL installed successfully!") $vbLabelText $csharpLabel このコードはメモリ内のワークブックオブジェクトを作成します。 エラーなく実行されれば、IronXL が使用準備完了であることを示しています。 ライブラリはすべてのモダンな .NET バージョンをサポートし、既存のプロジェクトと互換性があります。 詳細なインストールガイドとトラブルシューティングについては、公式ドキュメントを参照してください。 始める準備はできましたか? 今すぐ IronXL をダウンロードして、数分で Excel ファイルを生成し始めましょう。 出力 How to Generate Excel File in C# Using IronXL: Image 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 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"); 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"); Imports IronXL ' Create a new workbook (XLSX format by default) Dim workbook As 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 Dim worksheet As 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.0 ' Save the workbook workbook.SaveAs("FirstExcelFile.xlsx") $vbLabelText $csharpLabel このコードは Excel ファイル生成の主要な概念をいくつか示します。 WorkBook.Create() メソッドは、新しい Excel ファイルをメモリ内に初期化します。 フォーマットは、ExcelFileFormat列挙型を使用して指定します。最新のExcelとの互換性を確保する場合はXLSXを、レガシーサポートを確保する場合はXLSを選択します。 Metadata プロパティでは、Microsoft のドキュメント プロパティ標準に準拠し、Excel のファイル プロパティに表示されるドキュメント情報を埋め込むことができます。 CreateWorkSheet()メソッドは、指定された名前の新しいシートを追加します。 Excel のお馴染みのセル表記 (A1, B1 など) は、値を設定する際に直感的です。IronXL はデータ型変換を自動で処理し、日付、数値、テキストを明示的なキャストなしで認識します。 SaveAs()メソッドは、完全なExcelファイルをディスクに書き込みます。 さらなるワークシート操作については、ワークシート管理のチュートリアルをご覧ください。 出力 How to Generate Excel File in C# Using IronXL: Image 6 - Basic Excel Output. Excel セルにデータを書き込む方法? IronXL は、個々のセルの割り当てから一括範囲操作まで、Excel セルの入力に複数のアプローチを提供します。 これらのメソッドを理解することで、データシナリオに最適なアプローチを選択できます。 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"); 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"); Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX) ' Create a worksheet Dim worksheet As 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 Dim headers As String() = {"ID", "Name", "Email", "Phone"} For i As Integer = 0 To headers.Length - 1 worksheet.SetCellValue(0, i, headers(i)) Next ' Working with different data types worksheet("E1").Value = "Salary" worksheet("E2").Value = 75000.5D ' Decimal for currency worksheet("E3").Value = 82000.75D 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") $vbLabelText $csharpLabel このコードは IronXL の柔軟なセルアドレス指定を示します。 文字列表記 ("A1") は Excel ユーザーにとって自然に感じられ、数値インデックスによってループや動的な生成のためにプログラム的な制御が提供されます。 範囲の割り当て ("B1:B3") は複数のセルを同じ値に効率的に設定し、列の初期化やデフォルト値の適用に最適です。 IronXL はさまざまなデータ型を賢く処理します。小数は財務データ用に精度を維持し、DateTime オブジェクトは Excel の日付として適切にフォーマットされ、ブール値は TRUE/FALSE と表示されます。 この自動変換により手動のフォーマットコードが不要になり、データの整合性が保証されます。 出力 How to Generate Excel File in C# Using IronXL: Image 7 - Excel Output. より大きなデータセットのために、このパターンを検討してください: // 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; } // 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; } ' Populate from a data source Dim employees = GetEmployeeData() ' Your data source For row As Integer = 0 To employees.Count - 1 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 Next $vbLabelText $csharpLabel このアプローチはデータコレクションを介して繰り返し、それぞれのプロパティを対応する列にマッピングします。 文字列補間($"A{row + 2}")は、ヘッダを保持するために2行目から動的にセルアドレスを生成します。 プロフェッショナルなフォーマットを適用する方法? プロフェッショナルな Excel ファイルには、生データ以上が必要です。 IronXL のスタイリング API は、C# で Excel ファイルを生成する際に書式設定、色、視覚の階層を使用して、単純なスプレッドシートを洗練されたビジネス文書に変換します。 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"); } } 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"); } } Imports IronXL Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX) ' Create a worksheet Dim worksheet As WorkSheet = workbook.CreateWorkSheet("Employees") ' Header formatting Dim 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 Dim salaryColumn = worksheet("E2:E3") salaryColumn.FormatString = "$#,##0.00" ' Date formatting Dim dateColumn = worksheet("F2:F3") dateColumn.FormatString = "MM/dd/yyyy" ' Cell borders Dim 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 row As Integer = 2 To 3 If row Mod 2 = 0 Then worksheet($"A{row}:G{row}").Style.SetBackgroundColor("#F2F2F2") End If Next row $vbLabelText $csharpLabel このフォーマットコードは、企業標準に合致するプロフェッショナルな外観を作成します。 背景色のついた太字のヘッダーは視覚的な階層を確立します。 SetBackgroundColor() メソッドは 16 進色コードを受け入れ、カラースキームへの正確な制御を提供します。 フォントプロパティには、サイズ、色、太字、斜体、下線オプションが含まれており、企業のブランドガイドラインに従う Excel ファイルの作成には必須です。 列幅の調整は、テキストの切り捨てを防ぎます。 AutoSizeColumn() はコンテンツに自動的にフィットし、SetColumnWidth() は正確な制御を提供します。 数値の書式設定は Excel のフォーマットコードを使用します。 たとえば、"$#,##0.00" は千単位の桁区切り記号と小数点以下 2 桁で通貨を表示します。 日付の書式設定も類似のパターンに従い、Microsoft の Excel 仕様にドキュメントとして記載された Excel の日付フォーマット文字列を使用します。 罫線はデータの境界を定義し、可読性を向上させます。 BorderType 列挙型は、細線、中線、太線、点線、破線といったさまざまなスタイルを提供します。 配置オプションはヘッダーを中央に配置し、数字を右寄せにして、スプレッドシートの慣例に従います。 交互の行の色、いわゆる "バンド付き行" は、広いデータセットを横断して情報を追跡するために役立ちます。 フォーマットされた Excel データを作成するための上級フォーマットについては、セルスタイリングガイドをご覧ください。 出力 How to Generate Excel File in C# Using IronXL: Image 8 - フォーマットされたExcel出力. Excel フォーミュラをプログラム的に使用する方法? Excel フォーミュラは、自動計算でスプレッドシートに生命を吹き込みます。 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 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"); 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"); Imports System Dim workbook = WorkBook.Create() ' Create a budget worksheet Dim budget As WorkSheet = 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 Dim categories As String() = {"Salaries", "Marketing", "Operations", "Equipment", "Training"} Dim monthlyBudgets As Decimal(,) = { {50000, 52000, 51000}, {15000, 18000, 20000}, {8000, 8500, 9000}, {12000, 5000, 7000}, {3000, 3500, 4000} } ' Populate data For i As Integer = 0 To categories.Length - 1 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})" Next ' 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") $vbLabelText $csharpLabel この予算の例は、フォーミュラの実際の応用を示しています。 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. データベースから Excel へのデータエクスポート方法? 現実的なアプリケーションは、レポートや分析のためにデータベースデータを Excel にエクスポートすることが多々あります。 IronXLは組み込みのDataTableサポートによってこのプロセスを合理化し、C#アプリケーションからExcelファイルを生成する際の手作業によるフィールドマッピングを不要にします。 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"); 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"); Imports System Imports System.Data Imports System.Data.SqlClient ' Simulate database retrieval (replace with your actual database code) Function GetSalesData() As DataTable Dim dt As New DataTable("Sales") dt.Columns.Add("OrderID", GetType(Integer)) dt.Columns.Add("CustomerName", GetType(String)) dt.Columns.Add("Product", GetType(String)) dt.Columns.Add("Quantity", GetType(Integer)) dt.Columns.Add("UnitPrice", GetType(Decimal)) dt.Columns.Add("OrderDate", GetType(DateTime)) ' Sample data (normally from database) dt.Rows.Add(1001, "ABC Corp", "Widget Pro", 50, 25.99D, DateTime.Now.AddDays(-5)) dt.Rows.Add(1002, "XYZ Ltd", "Widget Basic", 100, 15.99D, DateTime.Now.AddDays(-4)) dt.Rows.Add(1003, "ABC Corp", "Widget Premium", 25, 45.99D, DateTime.Now.AddDays(-3)) dt.Rows.Add(1004, "Tech Solutions", "Widget Pro", 75, 25.99D, DateTime.Now.AddDays(-2)) dt.Rows.Add(1005, "XYZ Ltd", "Widget Premium", 30, 45.99D, DateTime.Now.AddDays(-1)) Return dt End Function ' Export to Excel Dim reportWorkbook As WorkBook = WorkBook.Create() Dim reportSheet As WorkSheet = reportWorkbook.CreateWorkSheet("Sales Report") ' Get data from database Dim salesData As DataTable = 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 Dim headerRow As Integer = 3 For col As Integer = 0 To salesData.Columns.Count - 1 reportSheet.SetCellValue(headerRow - 1, col, salesData.Columns(col).ColumnName) Next ' Format headers Dim headers = reportSheet($"A{headerRow}:F{headerRow}") headers.Style.Font.Bold = True headers.Style.SetBackgroundColor("#D9E1F2") ' Data rows For row As Integer = 0 To salesData.Rows.Count - 1 For col As Integer = 0 To salesData.Columns.Count - 1 reportSheet.SetCellValue(row + headerRow, col, salesData.Rows(row)(col)) Next ' Add total column with formula reportSheet($"G{row + headerRow + 1}").Formula = $"=D{row + headerRow + 1}*E{row + headerRow + 1}" Next ' 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 Dim summaryRow As Integer = 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 col As Integer = 0 To 6 reportSheet.AutoSizeColumn(col) Next ' Evaluate formulas and save reportWorkbook.EvaluateAll() reportWorkbook.SaveAs("DatabaseExport.xlsx") $vbLabelText $csharpLabel この包括的な例では、C#でExcelファイルを生成するための完全なデータベースからExcelへのワークフローを示します。 DataTableは、データベースの検索をシミュレートしています。本番では、Entity Framework、Dapper、またはADO.NETを使用した実際のデータベースクエリに置き換えてください。 手動のマッピングアプローチは、Microsoft のデータエクスポートのベストプラクティスとして推奨されるように、書式設定とレイアウトに対する完全な制御を提供します。 コードはタイトル、フォーマットされたヘッダー、データ行でプロフェッショナルなレポートを作成します。 フォーミュラ列は、各行のトータルを動的に計算します。 サマリーセクションは、データが変更された場合にこれらの値が更新されるように、注文の件数および収益をカウントするために Excel フォーミュラを利用します。 通貨と日付のフォーマットはビジネス文書の標準に従い、全ての内容が適切に表示されるように列幅が自動調整されます。 大規模データセットを扱うためのパフォーマンス最適化ガイドをお調べください。 出力 How to Generate Excel File in C# Using IronXL: Image 10 - Database Export to Excel Output. Excel レポートを効率化したいですか? ライセンスを取得することで、IronXLの可能性をフルに引き出すことができます。 複数のワークシートを管理する方法? 複雑な Excel ファイルはしばしば関連データを整理するために複数のワークシートを必要とします。 IronXL は、作成、アクセス、ワークシートの整理のための直感的なメソッドで複数シートの管理を簡素化します。 // 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"); // 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"); Imports System ' Create a multi-sheet workbook Dim companyReport As WorkBook = WorkBook.Create() ' Create department sheets Dim salesSheet As WorkSheet = companyReport.CreateWorkSheet("Sales") Dim inventorySheet As WorkSheet = companyReport.CreateWorkSheet("Inventory") Dim hrSheet As WorkSheet = 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" Dim regions As String() = {"North", "South", "East", "West"} Dim q1Sales As Decimal() = {250000D, 180000D, 220000D, 195000D} Dim q2Sales As Decimal() = {275000D, 195000D, 240000D, 210000D} For i As Integer = 0 To regions.Length - 1 salesSheet($"A{i + 4}").Value = regions(i) salesSheet($"B{i + 4}").Value = q1Sales(i) salesSheet($"C{i + 4}").Value = q2Sales(i) Next ' 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 Dim products As String() = {"Widget A", "Widget B", "Widget C"} Dim stock As Integer() = {150, 45, 200} Dim reorderPoint As Integer() = {100, 50, 75} For i As Integer = 0 To products.Length - 1 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 Dim status As String = If(stock(i) <= reorderPoint(i), "REORDER", "OK") inventorySheet($"D{i + 4}").Value = status ' Color code status If status = "REORDER" Then inventorySheet($"D{i + 4}").Style.Font.Color = "#FF0000" End If Next ' Create summary sheet referencing other sheets Dim summarySheet As WorkSheet = 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 For Each sheet As WorkSheet In companyReport.WorkSheets ' Format headers sheet("A1").Style.Font.Bold = True sheet("A1").Style.Font.Height = 14 Dim headerRow = sheet("A3:D3") headerRow.Style.Font.Bold = True headerRow.Style.SetBackgroundColor("#E7E6E6") Next ' Save multi-sheet workbook companyReport.SaveAs("CompanyReport.xlsx") $vbLabelText $csharpLabel この例は、完全なマルチシートレポートを作成します。 各ワークシートは特定の目的に役立ちます: 販売データ、在庫管理、人事指標。 サマリシートは、クロスシートフォーミュラを使用して主要指標を統合します。 Sales!B4:B7 "は、SalesシートのセルB4からB7を指しています。 在庫シートは条件付きロジックを示し、在庫が少ないアイテムを赤色で塗りつぶして直ちに注意を引きます。 foreachループは、すべてのシートで一貫した書式を適用し、ワークブック全体でプロフェッショナルな外観を維持します。 シート名は Excel のタブとして表示され、ユーザーが簡単に異なるデータビュー間をナビゲートできるようにします。 Excel 生成のためのベストプラクティスは何ですか? C# での効率的な Excel ファイル生成には、メモリ使用量、エラーハンドリング、デプロイメントへの思慮深いアプローチが必要です。 これらのプラクティスは、Excel スプレッドシートをプログラム的に作成する際に、アプリケーションが効果的にスケールし、信頼性を維持することを保証します。 メモリ管理は、大きなファイルで重要になります。 すべてのデータセットをメモリにロードするのではなく、データをチャンク単位で処理します。 // 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); } // 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); } ' Process large datasets efficiently Public Sub ExportLargeDataset(filename As String) Dim workbook As WorkBook = WorkBook.Create() Dim sheet As WorkSheet = workbook.CreateWorkSheet("Data") Dim rowsPerBatch As Integer = 1000 Dim currentRow As Integer = 1 ' Process in batches For Each batch In GetDataInBatches(rowsPerBatch) For Each record In batch sheet($"A{currentRow}").Value = record.Id sheet($"B{currentRow}").Value = record.Name sheet($"C{currentRow}").Value = record.Value currentRow += 1 Next Next workbook.SaveAs(filename) End Sub $vbLabelText $csharpLabel エラーハンドリングはアプリケーションのクラッシュを防ぎ、Excel ファイルを生成する際に意味のあるフィードバックを提供します。 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 } 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 } Imports System Try Dim workbook As WorkBook = WorkBook.Create() ' Excel generation code workbook.SaveAs("output.xlsx") Catch ex As Exception ' Log the error Console.WriteLine($"Excel generation failed: {ex.Message}") ' Implement appropriate recovery or notification End Try $vbLabelText $csharpLabel Web アプリケーションでは、Excel ファイルをメモリ内で生成し、ユーザーにストリームします。 // 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"); } // 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"); } Imports System.IO Imports Microsoft.AspNetCore.Mvc Public Function DownloadExcel() As IActionResult Dim workbook As WorkBook = GenerateReport() Dim stream As New MemoryStream() workbook.SaveAs(stream) stream.Position = 0 Return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx") End Function $vbLabelText $csharpLabel デプロイメントの考慮は、スムーズな本番運用を保証します。 IronXL は、昇格された権限なしで制限された環境で動作し、共有ホスティングおよびコンテナ化されたデプロイメントに適しています。 IronXL ライセンスファイルをデプロイメントパッケージに含め、必要に応じて一時ファイル操作のための書き込み権限があることを確認します。 追加のデプロイメントガイダンスについては、デプロイメント文書を参照してください。 結論 IronXL は、Excel ファイル生成を C# での複雑なチャレンジから簡単なコーディングに変えます。 ワークブック作成、セルの入力、フォーマットの適用、フォーミュラの使用、データベースデータのエクスポートを、Microsoft Office の依存なしで学びました。 プログラムによって Excel ファイルを生成するこれらの技術は、Windows、Linux、およびクラウドプラットフォーム全体で一貫して動作します。 C# アプリケーションで Excel を生成する準備ができましたか? 無料トライアルを始めるか、総合的なAPI ドキュメントで上級機能を探索してください。 本番展開には、プロジェクト要件に合ったライセンスオプションを確認してください。 How to Generate Excel File in C# Using IronXL: Image 11 - Licensing. よくある質問 IronXLとは何ですか? IronXLは、Microsoft Officeや複雑なCOM Interopを必要とせず、.NETアプリケーションでExcelファイルを作成、読み込み、編集するための強力なライブラリです。 IronXLを使ってC#でExcelファイルを作成するにはどうすればいいですか? IronXLを使用すると、ユーザーフレンドリーなAPIを利用して、C#でExcelファイルをプログラムで生成することができます。これには、スプレッドシートの作成、書式の適用、データベースとの統合が含まれます。 IronXLを使用するためにMicrosoft Officeをインストールする必要がありますか? IronXLはMicrosoft Officeを必要としません。Officeに依存することなくExcelファイルを作成、操作することができます。 IronXLはXLSとXLSXの両方のファイル形式を扱えますか? IronXLはXLSとXLSXの両方のファイル形式をサポートしており、さまざまなExcelファイルをシームレスに扱うことができます。 IronXLはレポートの作成やデータのエクスポートに適していますか? IronXLは、その堅牢な機能とシームレスな統合機能により、レポートの作成やExcelファイルへのデータのエクスポートに最適です。 IronXLにはどのようなフォーマットオプションがありますか? IronXLは、セルスタイル、条件付き書式設定などの高度な書式設定オプションを提供し、視覚的に魅力的で整理されたExcelドキュメントを作成することができます。 IronXLを使用してスプレッドシート生成を自動化できますか? はい、IronXLはスプレッドシート生成プロセスの自動化を可能にし、大規模なデータセットや反復作業を効率的に処理することを容易にします。 IronXLはC#だけでなくVisual Basicにも対応していますか? IronXLはC#とVisual Basicの両方で使用でき、.NETで異なるプログラミング言語を使用する開発者に柔軟性を提供します。 IronXLはどのようにデータベースと統合するのですか? IronXLはデータベースと簡単に統合でき、Excelファイルとデータベースシステム間で最小限の労力でデータのインポートとエクスポートが可能です。 .NETアプリケーションでIronXLを使用するためのチュートリアルはどこにありますか? IronXLを.NETアプリケーションで使用するための包括的なチュートリアルがIron Softwareのウェブサイトにあり、基本的なものから高度なものまで、Excelファイルの作成と操作について説明しています。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 公開日 2026年2月15日 C#でOleDbとIronXLを使用してDataTableをExcelにエクスポートする方法 C#でOleDbとIronXLを使用してDataTableをExcelにエクスポートする方法を学びます。 詳しく読む 公開日 2026年2月15日 IronXLを使用してOfficeがインストールされていないVB.NETで既存のExcelファイルを開く方法 IronXLを使用して、OfficeがインストールされていないVB.NETで既存のExcelファイルを開く方法について説明します。 詳しく読む 公開日 2026年2月15日 C# CSV to XLSX: 完全な開発者ガイド IronXLを使用してC#でCSVをXLSXに変換します。CSVファイルを読み込み、データ型を保持し、グラフを追加し、Microsoft Officeに依存せずにExcel形式にエクスポートします。 詳しく読む C#でStreamReaderを使用してExcelファイルを読み取る代替方法 - IronXLIronXL を使用した C# CSV 形...
公開日 2026年2月15日 C#でOleDbとIronXLを使用してDataTableをExcelにエクスポートする方法 C#でOleDbとIronXLを使用してDataTableをExcelにエクスポートする方法を学びます。 詳しく読む
公開日 2026年2月15日 IronXLを使用してOfficeがインストールされていないVB.NETで既存のExcelファイルを開く方法 IronXLを使用して、OfficeがインストールされていないVB.NETで既存のExcelファイルを開く方法について説明します。 詳しく読む
公開日 2026年2月15日 C# CSV to XLSX: 完全な開発者ガイド IronXLを使用してC#でCSVをXLSXに変換します。CSVファイルを読み込み、データ型を保持し、グラフを追加し、Microsoft Officeに依存せずにExcel形式にエクスポートします。 詳しく読む