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

C#でオブジェクトのリストをExcelにエクスポートする方法

IronXLでは開発者がリストをエクスポートできるMS Office に依存せずに C# でオブジェクトを Excel ファイルに直接インポートし、コレクションをプロフェッショナルな XLSX スプレッドシートに変換するシンプルなImportDataメソッドを通じて、型変換とプロパティ マッピングを自動的に処理します。

オブジェクトのコレクションをExcelファイルにエクスポートすることは、ビジネスアプリケーションの基本要件です。 レポートの作成、洞察の共有、バックアップの作成など、 Listを変換するための信頼できる方法が必要です。 Listオブジェクトをプロフェッショナルなスプレッドシートに変換します。 IronXL は、.NET、.NET Core、または .NET Framework で Excel ファイルを作成する際の従来の複雑さを排除する合理化されたソリューションを提供します。

リストをExcelファイルにエクスポートすることがなぜ難しいのですか?

データを Excel にエクスポートする従来の方法では、多くの場合 Microsoft Office Interop が必要になりますが、そのためにはサーバーに Excel をインストールする必要があり、展開に問題が生じます。 リフレクションを使用した手動のセルごとの入力は時間を要し、エラーが起きやすいです。 IronXL の強力なデータ インポート機能は、 MS Office や複雑なリフレクション コードを必要とせずに、データ ソースと Excel 列ヘッダー間のインテリジェントなプロパティ マッピングによってこれらの問題を解決します。

このライブラリは型変換を自動的に処理し、ネストオブジェクトをサポートし、CSVやXLSXファイルのような異なる形式でのデータの一貫性を維持します。 Interop なしで C# Excel 操作を扱う開発者にとって、IronXL は、堅牢な Excel 生成およびデータのインポート/エクスポート機能を必要とする最新の .NET プロジェクトに最適です。 このライブラリは、.NET MAUI アプリケーションとシームレスに統合され、 AzureおよびAWSクラウド プラットフォームへの展開をサポートします。

大規模なデータセットを扱う場合、従来の方法ではメモリ管理とパフォーマンスに問題が生じることがよくあります。 IronXL は、優れたパフォーマンス特性を維持しながら、さまざまなスプレッドシート形式間の変換を効率的に処理する最適化された内部データ構造により、これらの懸念に対処します。

シンプルなリストデータをExcelにエクスポートする方法は?

IronXLを始めるには、最小限のセットアップが必要です。まず、NuGetパッケージマネージャコンソールからライブラリをインストールします。

Install-Package IronXL.Excel

インストールすると、すぐに C# データ構造からExcel スプレッドシートの作成を開始できます。 Employee モデルを使用してデータをエクスポートする方法を見てみましょう。

using IronXL;
using System.Collections.Generic;
using System.Data;
public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Department { get; set; }
    public decimal Salary { get; set; }
    public DateTime HireDate { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        // Create sample data for Excel export
        var employees = new List<Employee>
        {
            new Employee { Id = 1, Name = "Alice Johnson", Department = "Engineering",
                           Salary = 95000, HireDate = new DateTime(2020, 3, 15) },
            new Employee { Id = 2, Name = "Bob Smith", Department = "Marketing",
                           Salary = 75000, HireDate = new DateTime(2021, 7, 1) },
            new Employee { Id = 3, Name = "Carol Williams", Department = "Engineering",
                           Salary = 105000, HireDate = new DateTime(2019, 11, 20) }
        };
        // Convert the list of employees to a DataTable
        DataTable dataTable = new DataTable();
        dataTable.Columns.Add("Id", typeof(int));
        dataTable.Columns.Add("Name", typeof(string));
        dataTable.Columns.Add("Department", typeof(string));
        dataTable.Columns.Add("Salary", typeof(decimal));
        dataTable.Columns.Add("HireDate", typeof(DateTime));
        foreach (var employee in employees)
        {
            dataTable.Rows.Add(employee.Id, employee.Name, employee.Department, employee.Salary, employee.HireDate);
        }
        // Export DataTable to Excel spreadsheet
        var workbook = new WorkBook();
        var worksheet = workbook.CreateWorkSheet("Employees");
        // Populate the worksheet
        for (int i = 0; i < dataTable.Columns.Count; i++)
        {
            worksheet.SetCellValue(0, i, dataTable.Columns[i].ColumnName); // Add column headers
        }
        for (int i = 0; i < dataTable.Rows.Count; i++)
        {
            for (int j = 0; j < dataTable.Columns.Count; j++)
            {
                worksheet.SetCellValue(i + 1, j, dataTable.Rows[i][j]); // Add data rows
            }
        }
        // Save as XLSX file
        workbook.SaveAs("EmployeeReport.xlsx");
    }
}
using IronXL;
using System.Collections.Generic;
using System.Data;
public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Department { get; set; }
    public decimal Salary { get; set; }
    public DateTime HireDate { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        // Create sample data for Excel export
        var employees = new List<Employee>
        {
            new Employee { Id = 1, Name = "Alice Johnson", Department = "Engineering",
                           Salary = 95000, HireDate = new DateTime(2020, 3, 15) },
            new Employee { Id = 2, Name = "Bob Smith", Department = "Marketing",
                           Salary = 75000, HireDate = new DateTime(2021, 7, 1) },
            new Employee { Id = 3, Name = "Carol Williams", Department = "Engineering",
                           Salary = 105000, HireDate = new DateTime(2019, 11, 20) }
        };
        // Convert the list of employees to a DataTable
        DataTable dataTable = new DataTable();
        dataTable.Columns.Add("Id", typeof(int));
        dataTable.Columns.Add("Name", typeof(string));
        dataTable.Columns.Add("Department", typeof(string));
        dataTable.Columns.Add("Salary", typeof(decimal));
        dataTable.Columns.Add("HireDate", typeof(DateTime));
        foreach (var employee in employees)
        {
            dataTable.Rows.Add(employee.Id, employee.Name, employee.Department, employee.Salary, employee.HireDate);
        }
        // Export DataTable to Excel spreadsheet
        var workbook = new WorkBook();
        var worksheet = workbook.CreateWorkSheet("Employees");
        // Populate the worksheet
        for (int i = 0; i < dataTable.Columns.Count; i++)
        {
            worksheet.SetCellValue(0, i, dataTable.Columns[i].ColumnName); // Add column headers
        }
        for (int i = 0; i < dataTable.Rows.Count; i++)
        {
            for (int j = 0; j < dataTable.Columns.Count; j++)
            {
                worksheet.SetCellValue(i + 1, j, dataTable.Rows[i][j]); // Add data rows
            }
        }
        // Save as XLSX file
        workbook.SaveAs("EmployeeReport.xlsx");
    }
}
$vbLabelText   $csharpLabel

このサンプルコードは、List<Employee>からExcelにデータをエクスポートする方法を示しています。 まず、従業員リストをDataTableに変換し、次に列ヘッダーと行を手動でワークシートに書き込みます。 IronXL は、int、文字列、 DateTimeなどのデータ型を自動的に処理し、生成されたスプレッドシートのフォーマットがきれいであることを保証します。 最後に、Excel の保存機能によりEmployeeReport .xlsxとして保存された XLSX ファイルが生成され、構造化された C# データをプロフェッショナルなExcel レポートに変換するシンプルで効率的な方法が提供されます。

上記のアプローチは、より複雑なシナリオに拡張できる基本的なパターンを表しています。 たとえば、既存のデータベース クエリからデータセットとデータ テーブルをエクスポートしたり、外部ソースからExcel データをインポートしたりする必要がある場合があります。 IronXL は、両方のシナリオに包括的な方法を提供するため、データ交換操作のための多目的ツールとなります。

! Excel スプレッドシートには、ID、名前、部門、給与、雇用日などの列を含むエクスポートされた従業員データが表示され、適切なデータ形式が設定された 3 つのサンプル従業員レコードが表示されています。

複雑なビジネスオブジェクトをエクスポートする方法は?

実際の.NETアプリケーションは、より複雑なデータ構造を伴うことがよくあります。 ネストされたプロパティ、計算フィールド、または階層化されたデータを扱う場合は、より洗練されたアプローチが必要です。 IronXL はこれらのシナリオの処理に優れており、さまざまな形式のデータを操作するための強力なサポートを提供します。 ネストされたプロパティを持つ製品インベントリをエクスポートする方法は次のとおりです。

using IronXL;
using System.Collections.Generic;
using System.Data;
public class Product
{
    public string SKU { get; set; }
    public string ProductName { get; set; }
    public string Category { get; set; }
    public decimal Price { get; set; }
    public int StockLevel { get; set; }
    public bool IsActive { get; set; }
    public DateTime LastRestocked { get; set; }
    public decimal CalculatedValue => Price * StockLevel;
}
class Program
{
    static void Main(string[] args)
    {
        // Generate product inventory list for Excel export
        var products = new List<Product>
        {
            new Product
            {
                SKU = "TECH-001",
                ProductName = "Wireless Mouse",
                Category = "Electronics",
                Price = 29.99m,
                StockLevel = 150,
                IsActive = true,
                LastRestocked = DateTime.Now.AddDays(-5)
            },
            new Product
            {
                SKU = "TECH-002",
                ProductName = "Mechanical Keyboard",
                Category = "Electronics",
                Price = 89.99m,
                StockLevel = 75,
                IsActive = true,
                LastRestocked = DateTime.Now.AddDays(-12)
            },
            new Product
            {
                SKU = "OFF-001",
                ProductName = "Desk Organizer",
                Category = "Office Supplies",
                Price = 15.99m,
                StockLevel = 0,
                IsActive = false,
                LastRestocked = DateTime.Now.AddMonths(-1)
            }
        };
        // Create Excel workbook and import collection data
        var workbook = WorkBook.Create();
        var worksheet = workbook.CreateWorkSheet("Inventory");
        // Export generic list to Excel with headers
        var dataTable = new DataTable();
        dataTable.Columns.Add("SKU", typeof(string));
        dataTable.Columns.Add("ProductName", typeof(string));
        dataTable.Columns.Add("Category", typeof(string));
        dataTable.Columns.Add("Price", typeof(decimal));
        dataTable.Columns.Add("StockLevel", typeof(int));
        dataTable.Columns.Add("IsActive", typeof(bool));
        dataTable.Columns.Add("LastRestocked", typeof(DateTime));
        dataTable.Columns.Add("CalculatedValue", typeof(decimal));
        foreach (var product in products)
        {
            dataTable.Rows.Add(
                product.SKU,
                product.ProductName,
                product.Category,
                product.Price,
                product.StockLevel,
                product.IsActive,
                product.LastRestocked,
                product.CalculatedValue
            );
        }
        // With the following code:
        worksheet["A1"].Value = "SKU";
        worksheet["B1"].Value = "ProductName";
        worksheet["C1"].Value = "Category";
        worksheet["D1"].Value = "Price";
        worksheet["E1"].Value = "StockLevel";
        worksheet["F1"].Value = "IsActive";
        worksheet["G1"].Value = "LastRestocked";
        worksheet["H1"].Value = "CalculatedValue";
        int row = 2;
        foreach (DataRow dataRow in dataTable.Rows)
        {
            worksheet[$"A{row}"].Value = dataRow["SKU"];
            worksheet[$"B{row}"].Value = dataRow["ProductName"];
            worksheet[$"C{row}"].Value = dataRow["Category"];
            worksheet[$"D{row}"].Value = dataRow["Price"];
            worksheet[$"E{row}"].Value = dataRow["StockLevel"];
            worksheet[$"F{row}"].Value = dataRow["IsActive"];
            worksheet[$"G{row}"].Value = dataRow["LastRestocked"];
            worksheet[$"H{row}"].Value = dataRow["CalculatedValue"];
            row++;
        }
        // Auto-fit columns for optimal display
        for (int col = 0; col < 8; col++)
        {
            worksheet.AutoSizeColumn(col);
        }
        // Save as Excel XLSX format
        workbook.SaveAs("ProductInventory.xlsx");
    }
}
using IronXL;
using System.Collections.Generic;
using System.Data;
public class Product
{
    public string SKU { get; set; }
    public string ProductName { get; set; }
    public string Category { get; set; }
    public decimal Price { get; set; }
    public int StockLevel { get; set; }
    public bool IsActive { get; set; }
    public DateTime LastRestocked { get; set; }
    public decimal CalculatedValue => Price * StockLevel;
}
class Program
{
    static void Main(string[] args)
    {
        // Generate product inventory list for Excel export
        var products = new List<Product>
        {
            new Product
            {
                SKU = "TECH-001",
                ProductName = "Wireless Mouse",
                Category = "Electronics",
                Price = 29.99m,
                StockLevel = 150,
                IsActive = true,
                LastRestocked = DateTime.Now.AddDays(-5)
            },
            new Product
            {
                SKU = "TECH-002",
                ProductName = "Mechanical Keyboard",
                Category = "Electronics",
                Price = 89.99m,
                StockLevel = 75,
                IsActive = true,
                LastRestocked = DateTime.Now.AddDays(-12)
            },
            new Product
            {
                SKU = "OFF-001",
                ProductName = "Desk Organizer",
                Category = "Office Supplies",
                Price = 15.99m,
                StockLevel = 0,
                IsActive = false,
                LastRestocked = DateTime.Now.AddMonths(-1)
            }
        };
        // Create Excel workbook and import collection data
        var workbook = WorkBook.Create();
        var worksheet = workbook.CreateWorkSheet("Inventory");
        // Export generic list to Excel with headers
        var dataTable = new DataTable();
        dataTable.Columns.Add("SKU", typeof(string));
        dataTable.Columns.Add("ProductName", typeof(string));
        dataTable.Columns.Add("Category", typeof(string));
        dataTable.Columns.Add("Price", typeof(decimal));
        dataTable.Columns.Add("StockLevel", typeof(int));
        dataTable.Columns.Add("IsActive", typeof(bool));
        dataTable.Columns.Add("LastRestocked", typeof(DateTime));
        dataTable.Columns.Add("CalculatedValue", typeof(decimal));
        foreach (var product in products)
        {
            dataTable.Rows.Add(
                product.SKU,
                product.ProductName,
                product.Category,
                product.Price,
                product.StockLevel,
                product.IsActive,
                product.LastRestocked,
                product.CalculatedValue
            );
        }
        // With the following code:
        worksheet["A1"].Value = "SKU";
        worksheet["B1"].Value = "ProductName";
        worksheet["C1"].Value = "Category";
        worksheet["D1"].Value = "Price";
        worksheet["E1"].Value = "StockLevel";
        worksheet["F1"].Value = "IsActive";
        worksheet["G1"].Value = "LastRestocked";
        worksheet["H1"].Value = "CalculatedValue";
        int row = 2;
        foreach (DataRow dataRow in dataTable.Rows)
        {
            worksheet[$"A{row}"].Value = dataRow["SKU"];
            worksheet[$"B{row}"].Value = dataRow["ProductName"];
            worksheet[$"C{row}"].Value = dataRow["Category"];
            worksheet[$"D{row}"].Value = dataRow["Price"];
            worksheet[$"E{row}"].Value = dataRow["StockLevel"];
            worksheet[$"F{row}"].Value = dataRow["IsActive"];
            worksheet[$"G{row}"].Value = dataRow["LastRestocked"];
            worksheet[$"H{row}"].Value = dataRow["CalculatedValue"];
            row++;
        }
        // Auto-fit columns for optimal display
        for (int col = 0; col < 8; col++)
        {
            worksheet.AutoSizeColumn(col);
        }
        // Save as Excel XLSX format
        workbook.SaveAs("ProductInventory.xlsx");
    }
}
$vbLabelText   $csharpLabel

このコードは、IronXLを使用してExcelで動的な製品インベントリレポートを生成する方法を示しています。 これは、SKU、価格、在庫レベル、再入荷日などの詳細を含むProductオブジェクトのリストを構築し、各アイテムの派生CalculatedValueを計算します。 データはDataTableに変換され、ヘッダー付きのExcelワークシートに書き込まれ、自動サイズの列を使用して読みやすくフォーマットされます。 IronXLは小数、ブール値、日付などのデータ型をシームレスに処理し、プロフェッショナルなスプレッドシートの出力を確保します。 結果ProductInventory .xlsx は、ビジネス レポートや分析に最適な、クリーンでデータ駆動型の在庫エクスポートを提供します。

複雑なオブジェクトを操作する場合は、異なるデータ カテゴリのワークシートを管理したり、単一のブック内に複数のシートを作成したりする必要がある場合もあります。 IronXL は高度なワークシート操作をサポートしており、エクスポートされたデータを論理的に整理できます。 さらに、特定の範囲を選択して対象データ操作を実行したり、セルを並べ替えてデータを意味のある順序で表示したりすることもできます。

! SKU、商品名、カテゴリ、価格、在庫レベル、アクティブ状態、最終在庫日、計算値の列を含む製品在庫エクスポートを表示するExcelスプレッドシート。さまざまな電子機器やオフィス用品を表示

プロフェッショナルなフォーマットを追加する方法は?

IronXL の包括的なスタイル設定機能を使用して、基本的なエクスポートを洗練されたレポートに変換します。 プロフェッショナルなフォーマット設定により、Excel エクスポートは単なるデータ ダンプから、洞察を効果的に伝える経営幹部向けのレポートへと進化します。 IronXL には、セルのフォントとサイズのカスタマイズ、背景のパターンと色境界線と配置の設定など、広範な書式設定オプションが用意されています。

// After importing data, apply professional formatting
var headerRange = worksheet["A1:H1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";
// Format currency columns for Excel export
var priceColumn = worksheet["D2:D100"];
priceColumn.Style.NumberFormat = "$#,##0.00";
// Apply conditional formatting to highlight business metrics
for (int row = 2; row <= products.Count + 1; row++)
{
    var stockCell = worksheet[$"E{row}"];
    if (stockCell.IntValue < 10)
    {
        stockCell.Style.BackgroundColor = "#FF6B6B";
    }
}
// Export formatted list to Excel file
workbook.SaveAs("FormattedInventory.xlsx");
// After importing data, apply professional formatting
var headerRange = worksheet["A1:H1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";
// Format currency columns for Excel export
var priceColumn = worksheet["D2:D100"];
priceColumn.Style.NumberFormat = "$#,##0.00";
// Apply conditional formatting to highlight business metrics
for (int row = 2; row <= products.Count + 1; row++)
{
    var stockCell = worksheet[$"E{row}"];
    if (stockCell.IntValue < 10)
    {
        stockCell.Style.BackgroundColor = "#FF6B6B";
    }
}
// Export formatted list to Excel file
workbook.SaveAs("FormattedInventory.xlsx");
$vbLabelText   $csharpLabel

これらのスタイリングオプションは、生のデータエクスポートを役員向けのレポートに変換します。 背景色付きの太字のヘッダーは、コレクションをExcelにエクスポートするときに視覚的な階層を作成します。 数値の書式設定により、通貨の値が適切に表示されます。 条件付き書式により、在庫レベルの低下などの重要なビジネス指標が強調表示されるため、エクスポートされた Excel スプレッドシートをすぐに在庫管理に活用できるようになります。 高度なセル書式設定境界線スタイルの詳細を学習して、エクスポートをさらに強化します。

IronXL は、基本的な書式設定に加えて、エクスポートしたデータを視覚化するためのExcel グラフの作成などの高度な機能をサポートしています。 また、ハイパーリンクを追加して関連するデータ ポイントや外部リソースに接続したり、ペインを固定して大規模なデータセットを効率的にナビゲートしたり、セルを結合して洗練されたレポート レイアウトを作成したりすることもできます。

! Excel の在庫スプレッドシートには、SKU、製品名、カテゴリ、価格、在庫レベルが条件付き書式で赤で強調表示された在庫ゼロ、IsActive ステータス、LastRestocked 日付、および CalculatedValue 列とともに表示されます。

IronXL を使い始めるのに最適な方法は何ですか?

IronXLは、複雑なExcel生成の作業をシンプルで保守可能なコードに変換します。 インテリジェントな ImportData<//code> メソッドにより、Microsoft Office に依存する必要がなくなり、企業の要件を満たすプロフェッショナルな結果が得られます。 このライブラリの包括的な機能セットは、基本的なリストのエクスポートから、スタイリングとフォーマットを用いた複雑なデータ変換までを扱います。

IronXL の使い始めは簡単です。 このライブラリは、 Docker コンテナLinux 環境macOS システムなど、さまざまなデプロイメント シナリオをサポートしています。 エンタープライズ展開の場合、IronXL は、柔軟なライセンス キー管理を備えた包括的なライセンス オプションを提供します。

この図書館はデータ交換業務にも優れています。 XLSX を CSV に変換したりCSV ファイルを書き込んだりCSV データを読み取り、さらにはDataTables を CSV 形式に変換することもできます。 Web アプリケーションの場合、IronXL はASP.NET MVCおよびBlazorフレームワークとシームレスに統合されます。

既存の Excel ファイルを操作する場合、IronXL はExcel ファイルを編集したり、ワークシートを開いたりXLSX ファイルを読み取ったりするための強力な機能を提供します。 プロジェクトで Visual Basic の統合が必要な場合は、 VB.NET Excel ファイルを使用することもできます。

今IronXLを始めましょう。
green arrow pointer

C#のExcelエクスポートを効率化する準備はできていますか? 今すぐIronXLをダウンロードし、ニーズに合わせて拡張させてください。 詳細なチュートリアルや例については、当社の包括的なドキュメントをご覧ください。 詳細な技術仕様についてはAPI リファレンスを参照し、IronXL が Excel 自動化ワークフローをどのように変革できるかを確認してください。

よくある質問

IronXLの主な機能は何ですか?

IronXLは、Listのようなオブジェクトコレクションを、従来の方法の複雑さなしに、.NET環境でExcelファイルにエクスポートするための効率的なソリューションを提供します。

IronXLはデータをExcelにエクスポートするプロセスをどのように簡素化しますか?

IronXLは、ImportDataメソッドを提供することでプロセスを簡素化し、開発者がOffice Interopを必要とせずにC#リストや複雑なオブジェクトを簡単にプロフェッショナルなExcelスプレッドシートに変換できるようにします。

IronXLは.NET Coreで使用できますか?

はい、IronXLは.NET Core、また.NETおよび.NET Frameworkと互換性があり、さまざまな開発環境での利用が可能です。

IronXLを使用する際にOffice Interopは必要ですか?

いいえ、IronXLはOffice Interopを必要とせず、データをExcelにエクスポートする際にプロセスを簡素化し、依存関係を減らします。

IronXLを使用してエクスポートできるC#リストの種類は何ですか?

IronXLは、一般的なリストと複雑なオブジェクトをExcelにエクスポートでき、さまざまなデータ構造を扱う開発者に柔軟なオプションを提供します。

なぜビジネスアプリケーションにおいてデータをExcelにエクスポートすることが重要ですか?

データをExcelにエクスポートすることは、レポートの生成、洞察の共有、バックアップの作成に不可欠であり、効果的なビジネス運営と意思決定にとって基本です。

IronXLはプロフェッショナルなスプレッドシートの作成をサポートしていますか?

はい、IronXLはC#リストをプロフェッショナルな品質のExcelスプレッドシートに変換するように設計されており、ビジネス報告やデータ分析に適しています。

IronXLは従来のExcelファイル作成方法と比べてどのような利点がありますか?

IronXLは、Excelファイル作成に伴う従来の複雑さや依存関係を排除し、開発者にとってより効率的で信頼性の高いアプローチを提供します。

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

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

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