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

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

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

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

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

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

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

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

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

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

Install-Package IronXL.Excel

インストールが完了すると、すぐにC#のデータ構造から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");
    }
}
$vbLabelText   $csharpLabel

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

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

Excel スプレッドシートには、ID、名前、部署、給与、および採用日の列を含むエクスポートされた従業員データが表示され、適切なデータ形式で 3 つのサンプル従業員レコードが表示されます。

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

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

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

SKU、製品名、カテゴリ、価格、在庫レベル、IsActiveステータス、最終補充日、計算値の列を含む製品在庫エクスポートを表示するExcelスプレッドシート。さまざまな電子機器とオフィス用品を表示しています。

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

IronXLの包括的なスタイリング機能を使えば、基本的なエクスポートデータを洗練されたレポートに変換できます。 Professional書式設定により、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グラフ作成など、高度な機能もサポートしています。 また、関連するデータポイントや外部リソースを接続するためのハイパーリンクを追加したり、大規模なデータセットをより簡単にナビゲートするためにウィンドウ枠を固定したり、セルを結合して高度なレポートレイアウトを作成したりすることもできます。

SKU、製品名、カテゴリ、価格、在庫レベル(在庫ゼロを赤で強調表示する条件付き書式設定)、IsActive ステータス、最終補充日、および CalculatedValue 列を表示するProfessionalな書式設定の Excel 在庫スプレッドシート

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

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

IronXLの使い始めは簡単です。 このライブラリは、 DockerコンテナLinux環境macOSシステムなど、さまざまなデプロイメントシナリオをサポートしています。 IronXLは、Enterprise向け導入において、柔軟なライセンスキー管理機能を備えた包括的なライセンスオプションを提供します。

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

IronXLは、既存のExcelファイルを扱う際に、 Excelファイルの編集ワークシートのオープンXLSXファイルの読み込みといった強力な機能を提供します。 プロジェクトでVisual Basicとの統合が必要な場合は、 .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ボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね