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

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

オブジェクトのコレクションをExcelファイルにエクスポートすることは、ビジネスアプリケーションの基本要件です。 レポートを生成したり、データをエクスポートして洞察を共有したり、バックアップ用のExcelワークシートを作成したりするとき、開発者はList<T>オブジェクトをプロフェッショナルなスプレッドシートに変換する信頼できる方法が必要です。 IronXLは、.NET、.NET Core、または.NET FrameworkでExcelファイルを作成する際の従来の複雑さを排除する、効率的なソリューションを提供します。

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

Excelへのデータエクスポートの従来の方法は、MS Excelのインストールが必要なMicrosoft Office Interopを含み、展開での問題を引き起こします。 リフレクションを使用した手動のセルごとの入力は時間を要し、エラーが起きやすいです。 IronXLの強力なデータインポート機能は、データソースとExcel列ヘッダー間のインテリジェントなプロパティマッピングでこれらの問題を解決し、MS Officeや複雑なリフレクションコードを必要としません。

このライブラリは型変換を自動的に処理し、ネストオブジェクトをサポートし、CSVやXLSXファイルのような異なる形式でのデータの一貫性を維持します。 InteropなしでのC# Excel操作を扱う開発者にとって、IronXLは強力なExcel生成とデータのインポート/エクスポート機能を必要とする最新の.NETプロジェクトに最適な選択肢です。

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

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

Install-Package IronXL.Excel

次のコード例では、従業員モデルを使用してデータをエクスポートする方法を探ります。

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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

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

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

実際の.NETアプリケーションは、より複雑なデータ構造を伴うことがよくあります。 C#を使用してオブジェクトのリストをExcelにエクスポートする際のネストされたプロパティを持つ製品インベントリをエクスポートする方法は次のとおりです。

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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

C#でオブジェクトのリストをExcelにエクスポートする方法:図2 - 複雑なビジネスオブジェクトの出力例

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

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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

これらのスタイリングオプションは、生のデータエクスポートを役員向けのレポートに変換します。 背景色付きの太字のヘッダーは、コレクションをExcelにエクスポートするときに視覚的な階層を作成します。 数値フォーマットは、通貨の値がプロフェッショナルに表示されることを保証します。 条件付きフォーマットは、低在庫水準などの重要なビジネスメトリックを強調し、エクスポートされたExcelスプレッドシートをインベントリ管理のためにすぐに実行可能にします。 Learn more about advanced cell formatting and border styles to enhance your exports further.

C#でオブジェクトのリストをExcelにエクスポートする方法:図3 - フォーマットされたワークシート

今日からExcelへのリストのエクスポートを始めましょう

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

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

C#のExcelエクスポートを効率化する準備はできていますか? 今すぐIronXLをダウンロードし、ニーズに合わせて拡張させてください。 チュートリアルや例をもっと見るには、私たちの包括的なドキュメントを訪れてください。

よくある質問

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

IronXLは、.NET環境でのListなどのオブジェクトコレクションを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
テクニカルライター

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

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