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 生産性ツールをまだ検討しています。 ただし、そのアプローチには XML スキーマや Open XML SDK インストールの詳細な知識を要するため、さらなる手動の努力が必要です。 IronXLはこのような複雑な問題を抽象化し、Excelをプログラムでより速く操作できるようにします。 C# プロジェクトにIronXLをインストールするにはどうすればいいですか? IronXLのインストールは、Visual Studio のNuGetパッケージ マネージャーを使用するとほんの数分で完了します。 ソリューション エクスプローラーでプロジェクトを右クリックし、" NuGetパッケージの管理"を選択します。"IronXl.Excel"を検索し、"インストール"をクリックします。 パッケージには、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!"); $vbLabelText $csharpLabel これがエラーなしで実行された場合、 IronXL は使用できる状態になります。 ライブラリはすべてのモダンな .NET バージョンをサポートし、既存のプロジェクトと互換性があります。 詳細なインストール ガイダンスとトラブルシューティングについては、公式のNuGetインストール ドキュメントを参照してください。 出力 最初の Excel ファイルを作成するにはどうすればよいですか? IronXLで Excel ファイルを作成するには、すべての Excel 操作への入り口となる WorkBook クラスから始まります。 このライブラリは最新の 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"); $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"); $vbLabelText $csharpLabel このコードは IronXL の柔軟なセルアドレス指定を示します。 文字列表記 ("A1") は Excel ユーザーにとって自然に感じられ、数値インデックスによってループや動的な生成のためにプログラム的な制御が提供されます。 範囲の割り当て ("B1:B3") は、複数のセルに効率的に同じ値を設定します。列を初期化したり、既定値を適用したりするのに最適です。 IronXLはさまざまなデータ型をインテリジェントに処理します。小数は財務データの精度を維持し、オブジェクトはExcelの日付として正しくフォーマットされ、ブール値はTRUE/FALSEとして表示されます。 この自動変換により手動のフォーマットコードが不要になり、データの整合性が保証されます。 大規模なデータセットの場合は、追加のパターンについてデータのインポート ガイドを参照してください。 出力 Excel ファイルにプロフェッショナルな書式設定を適用するにはどうすればよいですか? プロフェッショナルな 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"); $vbLabelText $csharpLabel この書式設定コードにより、ビジネス標準に準拠したプロフェッショナルな外観が作成されます。 背景色のついた太字のヘッダーは視覚的な階層を確立します。 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"); $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"); $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"); $vbLabelText $csharpLabel この例は、完全なマルチシートレポートを作成します。 各ワークシートは、売上データ、在庫追跡、概要ビューなど、特定の目的に使用されます。 サマリシートは、クロスシートフォーミュラを使用して主要指標を統合します。 シート参照構文に注意してください。"Sales!B4:B7"は、Sales シートのセル B4 から B7 を参照します。 在庫シートは条件付きロジックを示し、在庫が少ないアイテムを赤色で塗りつぶして直ちに注意を引きます。 foreach ループは、すべてのシートに一貫した書式を適用し、ワークブック全体でプロフェッショナルな外観を維持します。 シート名は Excel のタブとして表示されるため、ユーザーはさまざまなデータ ビュー間を簡単に移動できます。 C# で Excel ファイルを生成するためのベスト プラクティスは何ですか? C# での効率的な Excel ファイル生成には、メモリ使用量、エラーハンドリング、デプロイメントへの思慮深いアプローチが必要です。 これらのプラクティスは、Excel スプレッドシートをプログラム的に作成する際に、アプリケーションが効果的にスケールし、信頼性を維持することを保証します。 メモリ管理は、大きなファイルで重要になります。 データセット全体を一度に読み込むのではなく、データをバッチで処理します。 次のパターンにより、大量のエクスポートのメモリ使用量を予測可能に保つことができます。 using IronXL; WorkBook workbook = WorkBook.Create(); WorkSheet sheet = workbook.CreateWorkSheet("Data"); int rowsPerBatch = 1000; int currentRow = 2; sheet["A1"].Value = "ID"; sheet["B1"].Value = "Name"; sheet["C1"].Value = "Value"; // Process records in manageable batches foreach (var batch in GetDataInBatches(rowsPerBatch)) { foreach (var record in batch) { sheet[$"A{currentRow}"].Value = record.Id; sheet[$"B{currentRow}"].Value = record.Name; sheet[$"C{currentRow}"].Value = record.Value; currentRow++; } } workbook.SaveAs("LargeDataset.xlsx"); 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"); $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."); } } $vbLabelText $csharpLabel 以下の表は、主要なベスト プラクティスとそれを適用するタイミングをまとめたものです。 IronXL C# での Excel 生成のベストプラクティス シナリオ 推奨されるアプローチ 利点 Large datasets (>10,000 rows) チャンク書き込みによるバッチ処理 メモリフットプリントの削減 Webアプリケーションのダウンロード 一時ファイルの代わりにMemoryStreamを使用する ディスクIOなし、応答が速い 本番環境への展開 有効な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 ワークブックを読み込む方法について説明します。 詳しく読む