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を使用するために不可欠なテクニックを学ぶことができます。 なぜ 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 アプリケーションを対象にしてどこでもデプロイできます。 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のインストールは、ソリューション・エクスプローラーのNuGetパッケージ・マネージャーから一瞬で完了します。 Visual Studio でプロジェクトを右クリックし、"NuGet パッケージの管理"を選択します。"IronXl.Excel"を検索し、インストールをクリックします。 パッケージには、C# で Excel ファイルを生成するために必要なすべての依存関係が自動的に含まれます。 あるいは、パッケージマネージャーコンソールを使用します: Install-Package IronXl.Excel 最新の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!"); $vbLabelText $csharpLabel このコードはメモリ内のワークブックオブジェクトを作成します。 エラーなく実行されれば、IronXL が使用準備完了であることを示しています。 ライブラリはすべてのモダンな .NET バージョンをサポートし、既存のプロジェクトと互換性があります。 詳細なインストールガイドとトラブルシューティングについては、公式ドキュメントを参照してください。 始める準備はできましたか? 今すぐ IronXL をダウンロードして、数分で Excel ファイルを生成し始めましょう。 出力 初めての 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"); $vbLabelText $csharpLabel このコードは Excel ファイル生成の主要な概念をいくつか示します。 WorkBook.Create() メソッドは、メモリ内に新しい Excel ファイルを初期化します。 形式は、ExcelFileFormat 列挙を使用して指定します。最新の Excel との互換性が必要な場合は XLSX を選択し、従来のサポートが必要な場合は XLS を選択します。 Metadata プロパティを使用すると、 Microsoft のドキュメント プロパティ標準に準拠して、Excel のファイル プロパティに表示されるドキュメント情報を埋め込むことができます。 CreateWorkSheet() メソッドは、指定された名前で新しいシートを追加します。 Excel のお馴染みのセル表記 (A1, B1 など) は、値を設定する際に直感的です。IronXL はデータ型変換を自動で処理し、日付、数値、テキストを明示的なキャストなしで認識します。 SaveAs() メソッドは、完全な Excel ファイルをディスクに書き込みます。 さらなるワークシート操作については、ワークシート管理のチュートリアルをご覧ください。 出力 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"); $vbLabelText $csharpLabel このコードは IronXL の柔軟なセルアドレス指定を示します。 文字列表記 ("A1") は Excel ユーザーにとって自然に感じられ、数値インデックスによってループや動的な生成のためにプログラム的な制御が提供されます。 範囲の割り当て ("B1:B3") は複数のセルを同じ値に効率的に設定し、列の初期化やデフォルト値の適用に最適です。 IronXL はさまざまなデータ型を賢く処理します。小数は財務データ用に精度を維持し、DateTime オブジェクトは Excel の日付として適切にフォーマットされ、ブール値は TRUE/FALSE と表示されます。 この自動変換により手動のフォーマットコードが不要になり、データの整合性が保証されます。 出力 より大きなデータセットのために、このパターンを検討してください: // 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; } $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"); } } $vbLabelText $csharpLabel このフォーマットコードは、企業標準に合致するプロフェッショナルな外観を作成します。 背景色のついた太字のヘッダーは視覚的な階層を確立します。 SetBackgroundColor() メソッドは 16 進カラーコードを受け入れるため、カラースキームを正確に制御できます。 フォントプロパティには、サイズ、色、太字、斜体、下線オプションが含まれており、企業のブランドガイドラインに従う Excel ファイルの作成には必須です。 列幅の調整は、テキストの切り捨てを防ぎます。 AutoSizeColumn() はコンテンツを自動的に適合させますが、SetColumnWidth() は正確な制御を提供します。 数値の書式設定は Excel のフォーマットコードを使用します。 たとえば、"$#,##0.00" は千単位の桁区切り記号と小数点以下 2 桁で通貨を表示します。 日付の書式設定も類似のパターンに従い、Microsoft の Excel 仕様にドキュメントとして記載された Excel の日付フォーマット文字列を使用します。 罫線はデータの境界を定義し、可読性を向上させます。 BorderType 列挙型は、細線、中線、太線、点線、破線といったさまざまなスタイルを提供します。 配置オプションはヘッダーを中央に配置し、数字を右寄せにして、スプレッドシートの慣例に従います。 交互の行の色、いわゆる "バンド付き行" は、広いデータセットを横断して情報を追跡するために役立ちます。 フォーマットされた 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"); $vbLabelText $csharpLabel この予算の例は、フォーミュラの実際の応用を示しています。 Formula プロパティは、等号で始まる標準の Excel フォーミュラ構文を受け入れます。 IronXLは一般的な関数をサポートしています:SUM、AVERAGE、COUNT、MAX、MIN、その他多数。 フォーミュラ内のセル参照は Excel と全く同様に、相対参照と絶対参照に対応しています。 行合計数式 (=SUM(B{i + 2}:D{i + 2})) は、各カテゴリの四半期合計を計算します。 文字列補間は各行の適切なセル参照を動的に生成します。 月ごとの合計は全列を合算し、割合計算は特定のセルを合計で除算します。 EvaluateAll() メソッドはすべての数式を処理し、ワークブック全体で計算値を更新します。 これにより、Excel で開かれたときにフォーミュラが結果を表示することが保証されます。 評価なしでは、Excel は再計算をユーザーがトリガするまでフォーミュラを表示します。 出力 データベースから 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"); $vbLabelText $csharpLabel この包括的な例では、C#でExcelファイルを生成するための完全なデータベースからExcelへのワークフローを示します。 DataTable はデータベースの取得をシミュレートします。運用環境では、Entity Framework、Dapper、または ADO .NETを使用して、これを実際のデータベース クエリに置き換えてください。 手動のマッピングアプローチは、Microsoft のデータエクスポートのベストプラクティスとして推奨されるように、書式設定とレイアウトに対する完全な制御を提供します。 コードはタイトル、フォーマットされたヘッダー、データ行でプロフェッショナルなレポートを作成します。 フォーミュラ列は、各行のトータルを動的に計算します。 サマリーセクションは、データが変更された場合にこれらの値が更新されるように、注文の件数および収益をカウントするために Excel フォーミュラを利用します。 通貨と日付のフォーマットはビジネス文書の標準に従い、全ての内容が適切に表示されるように列幅が自動調整されます。 大規模データセットを扱うためのパフォーマンス最適化ガイドをお調べください。 出力 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"); $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); } $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 } $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"); } $vbLabelText $csharpLabel デプロイメントの考慮は、スムーズな本番運用を保証します。 IronXL は、昇格された権限なしで制限された環境で動作し、共有ホスティングおよびコンテナ化されたデプロイメントに適しています。 IronXL ライセンスファイルをデプロイメントパッケージに含め、必要に応じて一時ファイル操作のための書き込み権限があることを確認します。 追加のデプロイメントガイダンスについては、デプロイメント文書を参照してください。 結論 IronXL は、Excel ファイル生成を C# での複雑なチャレンジから簡単なコーディングに変えます。 ワークブック作成、セルの入力、フォーマットの適用、フォーミュラの使用、データベースデータのエクスポートを、Microsoft Office の依存なしで学びました。 プログラムによって Excel ファイルを生成するこれらの技術は、Windows、Linux、およびクラウドプラットフォーム全体で一貫して動作します。 C# アプリケーションで Excel を生成する準備ができましたか? 無料トライアルを始めるか、総合的なAPI ドキュメントで上級機能を探索してください。 本番展開には、プロジェクト要件に合ったライセンスオプションを確認してください。 よくある質問 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年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 ワークブックを読み込む方法について説明します。 詳しく読む C#でStreamReaderを使用してExcelファイルを読み取る代替方法 - IronXLC#でIronXLを使用してデータ...
更新日 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 ワークブックを読み込む方法について説明します。 詳しく読む