跳過到頁腳內容
使用 IRONXL

使用 IronXL 將 C# 物件清單匯出到 Excel

將物件集合匯出到 Excel 檔案是商業應用的基本需求。 無論是產生報表、匯出資料以分享見解,或是建立 Excel 工作表進行備份,開發人員都需要一種可靠的方法來轉換List將物件轉換為專業電子表格。 IronXL提供了一個簡化的解決方案,消除了在 .NET、.NET Core 或 .NET Framework 中建立 Excel 檔案的傳統複雜性。

為什麼將清單匯出到 Excel 檔案會遇到挑戰?

將資料匯出到 Excel 的傳統方法通常涉及 Microsoft Office Interop,這需要在伺服器上安裝 MS Excel,並會帶來部署上的麻煩。 手動逐個細胞進行反射計數既費時又容易出錯。 IronXL 強大的資料匯入功能透過在資料來源和 Excel 列標題之間進行智慧屬性對應來解決這些問題,而無需 MS Office 或複雜的反射程式碼。

此庫可自動處理類型轉換,支援嵌套對象,並能跨不同格式(如 CSV 檔案和 XLSX 檔案)保持資料完整性。 對於不使用 Interop 的 C# Excel 操作開發人員來說,IronXL 是現代 .NET 專案的理想選擇,這些專案需要強大的 Excel 生成和資料導入/匯出功能。

如何將簡單清單資料匯出到 Excel?

IronXL 的入門設定非常簡單。首先,透過 NuGet 套件管理器控制台安裝庫:

Install-Package IronXL.Excel
Install-Package IronXL.Excel
SHELL

在以下程式碼範例中,我們將探討如何使用 Employee 模型匯出資料:

using IronXL;
using System;
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;
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。 List<Employee>使用 IronXL。 它首先將員工清單轉換為資料表,然後手動將列標題和行寫入工作表。 IronXL 可自動處理intstringDateTime等資料類型,並確保產生的電子表格格式清晰。 最後,Excel 保存功能會產生一個 XLSX 文件,可以將其儲存為EmployeeReport.xlsx ,從而提供了一種簡單且高效的方法,將結構化的 C# 資料轉換為專業的Excel 報告

使用 IronXL 將 C# 物件清單匯出至 Excel:圖 1 - 與"使用 IronXL 將 C# 物件清單匯出至 Excel"相關的 3 張圖片中的第 1 張

如何匯出複雜的業務對象?

實際的 .NET 應用程式通常涉及更複雜的資料結構。 以下是如何使用 C# 將包含巢狀屬性的產品庫存匯出為 Excel 物件清單的方法:

using IronXL;
using System;
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
            );
        }

        // Set header values
        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;
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
            );
        }

        // Set header values
        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、價格、庫存水準和補貨日期等詳細資訊的產品物件列表,然後為每個項目計算一個衍生的CalculatedValue 。 資料被轉換為DataTable ,寫入帶有標題的 Excel 工作表,並使用自動調整列寬的方式進行格式化以提高可讀性。 IronXL 可以無縫處理小數、布林值和日期等資料類型,確保專業的電子表格輸出。 產生的ProductInventory.xlsx文件提供了一個清晰、數據驅動的庫存匯出文件,非常適合用於業務報告或分析。

使用 IronXL 將 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 電子表格能夠立即用於庫存管理。 了解更多進階儲存格格式設定邊框樣式,以進一步增強您的匯出功能。

使用 IronXL 將 C# 物件清單匯出到 Excel:圖 3 - 格式化工作表

立即開始將清單匯出到 Excel

IronXL 將複雜的 Excel 產生任務轉換為簡單、易於維護的程式碼。 其智慧的ImportData方法無需依賴 Microsoft Office,即可提供滿足企業需求的專業結果。 該庫的綜合功能集可以處理從基本清單匯出到具有樣式和格式的複雜資料轉換的一切操作。

!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110--

準備好簡化您的 C# Excel 匯出流程了嗎? 立即下載 IronXL ,體驗在 .NET 應用程式中將清單物件轉換為 Excel 的便捷方式。 對於生產環境部署,請了解我們靈活的授權選項,這些選項可根據您的需求進行擴展。 請造訪我們的完整文檔,以獲取更多教學和範例。

常見問題解答

如何將C#清單匯出到Excel檔案?

您可以使用 IronXL 的 ImportData 方法將 C# 清單匯出到 Excel 文件,這簡化了流程,無需 Office Interop。

我為什麼要使用 IronXL 將資料匯出到 Excel?

IronXL 提供了一個簡化的解決方案,可將資料匯出至 Excel,消除了傳統的複雜性,並可輕鬆與 .NET、.NET Core 或 .NET Framework 整合。

我需要安裝 Microsoft Office 才能使用 IronXL 嗎?

不,IronXL 不需要安裝 Microsoft Office。它可以獨立運行,讓您以程式設計方式建立和操作 Excel 檔案。

IronXL在匯出到Excel時能否處理清單中的複雜物件?

是的,IronXL 既可以處理普通列表,也可以處理複雜對象,從而可以靈活地將各種類型的資料匯出到 Excel。

IronXL 是否兼容 .NET Core?

是的,IronXL 與 .NET Core、.NET 和 .NET Framework 都相容,使其能夠靈活應用於不同的開發環境。

使用 IronXL 的 ImportData 方法有什麼優勢?

IronXL 中的 ImportData 方法簡化了將資料從 C# 清單傳輸到 Excel 的過程,從而降低了程式碼的複雜性並提高了生產力。

我可以用IronXL建立專業電子表格嗎?

當然,IronXL 允許開發人員轉換列表輕鬆將物件匯入專業電子表格,適用於報表、資料共用或備份。

是否有使用 IronXL 的程式碼範例?

是的,IronXL 文件和教學課程提供了簡單的程式碼範例,用於將通用清單和複雜物件匯出到 Excel。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。