IRONXLの使用 IronXLを使用して C# で Excel ファイルを生成する方法 カーティス・チャウ 更新日:2026年3月1日 IronXL をダウンロード NuGet ダウンロード DLL ダウンロード 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る 従来、C#でExcelワークシートファイルをプログラム的に生成するには、Microsoft Officeのインストールや複雑なCOM相互運用が必要でした。IronXLはこれを完全に変え、Officeへの依存なしにExcelファイルを作成できるシンプルなAPIを提供します。 このチュートリアルでは、基本的なスプレッドシートの作成から高度なフォーマットやデータベース統合まで、C# を使用して IronXL で Excel ファイルを構築する方法について説明しています。 レポートの作成、データのエクスポート(XLS または XLSX ファイル)、スプレッドシート生成の自動化など、どのような作業を行う場合でも、 .NETアプリケーションで Excel を操作するための基本的なテクニックを学ぶことができます。 Microsoft Officeを使わずにExcelファイルを生成する理由とは? Office への依存性なしで Excel 生成機能を開発することは、重大なデプロイメントの課題を解決します。 サーバー環境には、通常、ライセンスコストとリソースオーバーヘッドのために Microsoft Office はインストールされていません。 各 Office インストールは大量のディスク空間とメモリを必要とし、クラウド展開やコンテナ化されたアプリケーションには非現実的です。 IronXLは独立して動作することで、これらの制約を解消します。 C# での Excel ファイル生成は、Windows、Linux、macOS、Docker コンテナ、または Azure App Services 上で変更なしに動作します。 このクロスプラットフォーム互換性により、 .NET Framework、 .NET Core、 .NET 10のいずれのアプリケーションをターゲットとする場合でも、一度コードを書けばどこにでもデプロイできます。 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をインストールするにはどうすればよいですか? IronXLのインストールは、Visual StudioのNuGetパッケージマネージャーを使えばほんの数分で完了します。 ソリューションエクスプローラーでプロジェクトを右クリックし、" NuGetパッケージの管理"を選択します。"IronXL"を検索し、"インストール"をクリックします。 パッケージには、C# で Excel ファイルを生成するために必要なすべての依存関係が自動的に含まれます。 パッケージマネージャーコンソールまたは.NET CLIを使用してインストールするには、次のいずれかのコマンドを使用します。 Install-Package IronXl.Excel dotnet add package IronXl.Excel Install-Package IronXl.Excel dotnet add package IronXl.Excel SHELL ライブラリが準備完了していることを確認するために、以下の簡単なテストでインストールを検証してください。 using IronXL; // Create an in-memory workbook var workbook = WorkBook.Create(); Console.WriteLine("IronXL installed successfully!"); using IronXL; // Create an in-memory workbook var workbook = WorkBook.Create(); Console.WriteLine("IronXL installed successfully!"); Imports IronXL ' Create an in-memory workbook Dim workbook = WorkBook.Create() Console.WriteLine("IronXL installed successfully!") $vbLabelText $csharpLabel エラーなく実行されれば、 IronXLは使用準備完了です。 ライブラリはすべてのモダンな .NET バージョンをサポートし、既存のプロジェクトと互換性があります。 詳細なインストール手順とトラブルシューティングについては、公式のNuGetインストールドキュメントを参照してください。 出力 最初の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"); 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"); 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 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.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 ファイル全体をディスクに書き込みます。 ワークシートの操作方法については、 "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"); 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"); Imports IronXL Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX) 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 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 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("EmployeeData.xlsx") $vbLabelText $csharpLabel このコードは IronXL の柔軟なセルアドレス指定を示します。 文字列表記 ("A1") は Excel ユーザーにとって自然に感じられ、数値インデックスによってループや動的な生成のためにプログラム的な制御が提供されます。 範囲指定("B1:B3"など)を使用すると、複数のセルに同じ値を効率的に設定できるため、列の初期化やデフォルト値の適用に最適です。 IronXL はさまざまなデータ型をインテリジェントに処理します。小数点以下の値は財務データの精度を維持し、DateTime オブジェクトは Excel の日付として正しくフォーマットされ、ブール値は TRUE/FALSE として表示されます。 この自動変換により手動のフォーマットコードが不要になり、データの整合性が保証されます。 大規模なデータセットの場合は、データインポートガイドを参照して、その他のパターンを確認してください。 出力 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"); 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"); Imports IronXL Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX) 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 width ' 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 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 row As Integer = 2 To 10 If row Mod 2 = 0 Then worksheet($"A{row}:G{row}").Style.SetBackgroundColor("#F2F2F2") End If Next workbook.SaveAs("FormattedReport.xlsx") $vbLabelText $csharpLabel この書式設定コードは、ビジネス基準を満たすProfessional外観を作り出します。 背景色のついた太字のヘッダーは視覚的な階層を確立します。 SetBackgroundColor() メソッドは 16 進カラーコードを受け入れ、配色を正確に制御できます。 フォントのプロパティには、サイズ、色、太字、斜体、下線などのオプションが含まれており、これらはすべて、企業のブランディングガイドラインに準拠したExcelファイルを作成するために不可欠です。 列幅の調整は、テキストの切り捨てを防ぎます。 AutoSizeColumn() はコンテンツを自動的に調整し、GetColumn().Width は正確な制御を提供します。 数値の書式設定には、Excelの書式コードが使用されます。たとえば、"$#,##0.00"は、千の位の区切り記号と小数点以下2桁で通貨を表示します。 日付の書式設定は、Microsoft の数値書式コードリファレンスに記載されている標準の Excel 日付書式文字列を使用して、同様のパターンに従います。 罫線はデータの境界を定義し、可読性を向上させます。 BorderType 列挙型は、細線、中線、太線、点線、破線など、さまざまなスタイルを提供します。 交互の行の色、いわゆる "バンド付き行" は、広いデータセットを横断して情報を追跡するために役立ちます。 セル結合やその他のレイアウト機能の詳細については、"セル結合ガイド"を参照してください。 出力 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"); 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"); Imports IronXL 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 and add row total formulas 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) 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" ' Average calculation budget("A10").Value = "Average Spending" budget("B10").Formula = "=AVERAGE(B2:B6)" ' Evaluate all formulas before saving workbook.EvaluateAll() workbook.SaveAs("Budget.xlsx") $vbLabelText $csharpLabel この予算の例は、フォーミュラの実際の応用を示しています。 Formula プロパティは、等号で始まる標準的な Excel 数式構文を受け入れます。 IronXLは一般的な関数をサポートしています:SUM、AVERAGE、COUNT、MAX、MIN、その他多数。 フォーミュラ内のセル参照は Excel と全く同様に、相対参照と絶対参照に対応しています。 EvaluateAll() メソッドは、すべての数式を処理し、ワークブック全体で計算された値を更新します。 これにより、Excelでファイルを開いたときに数式が正しく表示されるようになります。 評価を行わない場合、Excelはユーザーが再計算をトリガーするまで数式テキストを表示します。 数式の結果の読み取り方法の詳細については、 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"); 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"); Imports System.Data Imports IronXL ' Simulate database retrieval (replace with 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)) 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") Dim salesData As DataTable = 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 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 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 reportSheet($"G{row + headerRow + 1}").Formula = $"=D{row + headerRow + 1}*E{row + headerRow + 1}" Next ' 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 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" For col As Integer = 0 To 6 reportSheet.AutoSizeColumn(col) Next reportWorkbook.EvaluateAll() reportWorkbook.SaveAs("DatabaseExport.xlsx") $vbLabelText $csharpLabel この例は、データベースからExcelへの完全なワークフローを示しています。 DataTable はデータベース取得をシミュレートします。本番環境では、これを Entity Framework、Dapper、または ADO .NETを使用した実際のデータベースクエリに置き換えてください。 手動のマッピングアプローチは、Microsoft のデータエクスポートのベストプラクティスとして推奨されるように、書式設定とレイアウトに対する完全な制御を提供します。 コードはタイトル、フォーマットされたヘッダー、データ行でプロフェッショナルなレポートを作成します。 フォーミュラ列は、各行のトータルを動的に計算します。 概要セクションでは、Excelの数式を使用して注文数をカウントし、収益を合計することで、データが変更された場合にこれらの値が更新されるようにしています。 DataSetやより大規模なデータ構造を扱う場合は、 ExcelからDataSetへの変換ガイドを参照してください。 出力 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"); 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"); Imports IronXL Dim companyReport As WorkBook = WorkBook.Create() ' Create department sheets Dim salesSheet As WorkSheet = companyReport.CreateWorkSheet("Sales") Dim inventorySheet As WorkSheet = companyReport.CreateWorkSheet("Inventory") Dim summarySheet As WorkSheet = 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" Dim regions As String() = {"North", "South", "East", "West"} Dim q1Sales As Decimal() = {250000, 180000, 220000, 195000} Dim q2Sales As Decimal() = {275000, 195000, 240000, 210000} 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" 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) Dim status As String = If(stock(i) <= reorderPoint(i), "REORDER", "OK") inventorySheet($"D{i + 4}").Value = status If status = "REORDER" Then inventorySheet($"D{i + 4}").Style.Font.Color = "#FF0000" End If Next ' 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 For Each sheet As WorkSheet In companyReport.WorkSheets sheet("A1").Style.Font.Bold = True sheet("A1").Style.Font.Height = 14 Next companyReport.SaveAs("CompanyReport.xlsx") $vbLabelText $csharpLabel この例は、完全なマルチシートレポートを作成します。 各ワークシートは、売上データ、在庫追跡、概要表示など、それぞれ特定の目的のために設計されています。 サマリシートは、クロスシートフォーミュラを使用して主要指標を統合します。 シート参照構文に注目してください。"Sales!B4:B7"は、SalesシートのセルB4からB7までを指します。 在庫シートは条件付きロジックを示し、在庫が少ないアイテムを赤色で塗りつぶして直ちに注意を引きます。 foreach ループは、すべてのシートに一貫した書式を適用し、ワークブック全体でProfessional外観を維持します。 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"); 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"); Imports IronXL Dim workbook As WorkBook = WorkBook.Create() Dim sheet As WorkSheet = workbook.CreateWorkSheet("Data") Dim rowsPerBatch As Integer = 1000 Dim currentRow As Integer = 2 sheet("A1").Value = "ID" sheet("B1").Value = "Name" sheet("C1").Value = "Value" ' Process records in manageable 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("LargeDataset.xlsx") $vbLabelText $csharpLabel 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."); } } // 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."); } } Imports System Imports System.IO Imports Microsoft.AspNetCore.Mvc Public Class YourController Inherits Controller Public Function DownloadExcel() As IActionResult Try Dim workbook As WorkBook = WorkBook.Create() Dim sheet As WorkSheet = workbook.CreateWorkSheet("Report") sheet("A1").Value = "Report Data" ' Populate report data here... Dim stream As New MemoryStream() workbook.SaveAs(stream) stream.Position = 0 Return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx") Catch ex As Exception Console.WriteLine($"Excel generation failed: {ex.Message}") Return StatusCode(500, "Failed to generate Excel file.") End Try End Function End Class $vbLabelText $csharpLabel 以下の表は、主要なベストプラクティスとその適用時期をまとめたものです。 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のハウツーガイドを参照するか、試用版ライセンスのページにアクセスして実運用を開始してください。 プロジェクトの要件と規模に合ったライセンスオプションをご覧ください。 よくある質問 C#を使用してExcelファイルを生成するにはどうすればよいですか? IronXLを使用すると、C# で Excel ファイルを生成できます。IronXL は、Microsoft Office のインストールや複雑な COM Interop を必要とせずに Excel ファイルを作成するためのシンプルな API を提供します。 C#でExcelファイルを操作するにはMicrosoft Officeが必要ですか? いいえ、Microsoft Officeは必要ありません。IronXLを使用すると、Officeに依存せずにC#でExcelファイルを作成および操作できます。 IronXLを従来の方法よりも使用する利点は何ですか? IronXL は、Microsoft Office と複雑な COM Interop の必要性を排除し、Excel ファイルの作成と操作のための簡単な API を提供することで、Excel ファイルの生成プロセスを簡素化します。 IronXLを使用してデータベースを Excel ファイルと統合できますか? はい、 IronXL はデータベース統合などの高度な操作をサポートしており、データを Excel ファイルに効率的にエクスポートできます。 IronXLで生成できるファイル形式は何ですか? IronXL を使用すると、XLS と XLSX の両方のファイル形式を作成できるため、さまざまな Excel ファイル生成ニーズに柔軟に対応できます。 IronXL はExcel ファイルの高度な書式設定をサポートしていますか? はい、 IronXL は高度な書式設定機能をサポートしており、Excel ファイルの外観と構造をカスタマイズできます。 IronXLを使用してスプレッドシートの生成を自動化することは可能ですか? はい、 IronXL はスプレッドシートの生成を自動化し、レポート作成やデータのエクスポートなどのプロセスを合理化するツールとテクニックを提供します。 .NETアプリケーションで Excel を使用してレポートを作成するにはどうすればよいですか? IronXL は、 .NETアプリケーション内で直接 Excel ファイルを生成することでレポートを簡単に作成する方法を提供し、データ プレゼンテーションのための強力なソリューションを提供します。 C# で Excel を操作するために必須のテクニックは何ですか? IronXLを使用して C# で Excel を操作するための基本的なテクニックには、基本的なスプレッドシートの作成、高度な書式設定、データベース統合などがあります。 IronXL をC# で使用するためのドキュメントはどこにありますか? Iron Software のWeb サイトには、C# でIronXL を使用するための包括的なドキュメントがあり、さまざまなユースケースのチュートリアルと例が含まれています。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 更新日 2026年3月1日 ASP .NET C# で Excel ファイルをダウンロード: XLSX、CSV などにデータをエクスポート C#とIronXLを使用して、 ASP.NET CoreでExcelファイルをダウンロードします。MVCコントローラーからMemoryStreamとFile()を使用して、XLSX、CSV、XML形式でデータをエクスポートします。コード例も含まれています。 詳しく読む 更新日 2026年3月1日 IronXLを使用してBlazorで Excel ファイルをエクスポートする方法 IronXLを使用してBlazor Server アプリケーションから Excel にデータをエクスポートする方法を学びます。このガイドでは、プロジェクトのセットアップ、サービス設計、条件付き書式、複数シートのレポート、エラー処理について、完全な C# コード例とともに説明します。 詳しく読む 更新日 2026年2月27日 StreamReader の代わりに C# で Excel ファイルを読み取る方法 StreamReader が Excel ファイルを読み取れない理由と、 IronXL を使用して C# .NETのディスクまたはメモリ ストリームから XLSX および XLS ワークブックを読み込む方法について説明します。 詳しく読む StreamReader の代わりに C# で Excel ファイルを読み取る方法OleDb とIronXLを使用して Data...
更新日 2026年3月1日 ASP .NET C# で Excel ファイルをダウンロード: XLSX、CSV などにデータをエクスポート C#とIronXLを使用して、 ASP.NET CoreでExcelファイルをダウンロードします。MVCコントローラーからMemoryStreamとFile()を使用して、XLSX、CSV、XML形式でデータをエクスポートします。コード例も含まれています。 詳しく読む
更新日 2026年3月1日 IronXLを使用してBlazorで Excel ファイルをエクスポートする方法 IronXLを使用してBlazor Server アプリケーションから Excel にデータをエクスポートする方法を学びます。このガイドでは、プロジェクトのセットアップ、サービス設計、条件付き書式、複数シートのレポート、エラー処理について、完全な C# コード例とともに説明します。 詳しく読む
更新日 2026年2月27日 StreamReader の代わりに C# で Excel ファイルを読み取る方法 StreamReader が Excel ファイルを読み取れない理由と、 IronXL を使用して C# .NETのディスクまたはメモリ ストリームから XLSX および XLS ワークブックを読み込む方法について説明します。 詳しく読む