IRONSOFTWAREHOME
USING IRONXL

在 C# 中如何將一組物件導出到 Excel

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

IronXL允許開發者直接將List物件匯出為Excel文件,而不需依賴MS Office,通過簡單的ImportData方法自動處理型別轉換和屬性映射,將集合轉換為專業的XLSX試算表。

在商業應用程式中,將物件集合匯出為Excel檔案是一項基本要求。 無論您是在生成報告、分享見解還是建立備份,您都需要一種可靠的方法將List<t>物件轉換為專業的試算表。 IronXL提供了一個簡化的解決方案,消除了在.NET、.NET Core或.NET Framework中建立Excel文件的傳統複雜性。

為什麼將清單匯出到Excel檔案具有挑戰性?

傳統的資料匯出到Excel的方法通常涉及使用Microsoft Office Interop,這需要在伺服器上安裝Excel,且在部署時造成麻煩。 使用反射手動逐個填充儲存格既耗時又容易出錯。 IronXL強大的資料匯入功能解決了這些問題,實現了資料源和Excel列標題之間的智能屬性映射,無需MS Office或複雜的反射程式碼。

該程式庫自動處理型別轉換,支持巢狀物件,並保持不同格式(如CSV檔和XLSX檔)之間的資料完整性。 對於從事無需Interop的C# Excel操作的開發者,IronXL是現代.NET專案的理想選擇,具備強大的Excel生成和資料匯入/匯出能力。 該程式庫可以無縫整合.NET MAUI應用程式,並支援部署到AzureAWS雲端平台。

在處理大型資料集時,傳統方法常常在記憶體管理與效能上遇到困難。 IronXL針對這些問題提供優化的內部資料結構,有效地處理不同試算表格式之間的轉換,同時保持出色的效能特徵。

如何將簡單的列表資料匯出到Excel?

使用IronXL只需最少的設定。首先,通過NuGet程式包管理器控制台安裝程式庫:

PM > 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");
    }
}

此範例程式碼演示如何使用IronXL從List<Employee>匯出資料到Excel。 它首先將員工列表轉換為DataTable,然後手動將列標題和行寫入工作表。 IronXL自動處理如int、string和DateTime型別資料,確保生成的試算表格式清晰。 最後,Excel保存功能生成一個名為**EmployeeReport.xlsx**的XLSX文件,提供了一種簡單高效的方法,將結構化的C#資料轉化為專業Excel報告

上述方法代表了一種基礎模式,您可以擴展它以處理更複雜的情境。 例如,您可能需要從現有的資料庫查詢中匯出資料集和資料表或從外部資源匯入Excel資料。 IronXL為這兩種情境提供了全面的方法,使之成為一個適合資料交換操作的多功能工具。

Excel試算表顯示匯出之員工資料,包含Id、Name、Department、Salary和HireDate等欄位,展示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");
    }
}

此程式碼展示了如何使用IronXL在Excel中生成動態產品庫存報告。 它構建了一個包含SKU、價格、庫存水平和補貨日期詳細資訊的產品物件列表,然後為每個項目計算一個衍生的CalculatedValue。 資料被轉換成DataTable,寫入Excel工作表並加上標題,並通過自動調整列大小進行格式化以提高可讀性。 IronXL無縫處理小數、布林值和日期等資料型別,確保專業的試算表輸出。 結果ProductInventory.xlsx是一個乾淨的、以資料為驅動的庫存匯出,非常適合商務報告或分析。

在處理複雜物件時,您可能還需要管理工作表以處理不同的資料類別或者在一個工作簿中建立多個工作表。 IronXL支持高級工作表操作,允許您以邏輯方式組織匯出的資料。 此外,您可以選擇特定的範圍進行目標資料操作,或者排序單元格以按有意義的順序呈現資料。

Excel試算表顯示產品庫存匯出,包含SKU、ProductName、Category、Price、StockLevel、IsActive狀態、LastRestocked日期和CalculatedValue,展示各種電子產品和辦公用品。

如何新增專業格式?

使用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");

這些樣式選項將原始資料匯出轉變為行政準備的報告。 帶背景顏色的粗體標題在將集合匯出到Excel時建立視覺層次。 數字格式確保貨幣值專業顯示。 條件格式突出關鍵商務指標,例如低庫存水平,讓匯出的Excel試算表立即可用於庫存管理。 了解更多關於高級單元格格式邊框樣式的知識,以進一步增強您的匯出。

除了基本格式化之外,IronXL還支持高級功能,例如建立Excel圖表以視覺化匯出的資料。 您還可以新增超連結以連接相關資料點或外部資源,凍結窗格來更好地導航大型資料集,甚至合併單元格以建立複雜的報告佈局。

Excel庫存試算表帶專業格式,顯示SKU、ProductName、Category、Price、StockLevel,在格式設置中突出顯示零庫存為紅色,IsActive狀態、LastRestocked日期及CalculatedValue欄。

開始使用IronXL的最佳方法是?

IronXL將複雜的Excel生成任務轉化為簡單且可維護的程式碼。 其智能的ImportData方法消除了對Microsoft Office的依賴,同時提供迎合企業需求的專業結果。 該程式庫的全方位功能集處理從基本列表匯出到具有造型和格式化的複雜資料轉換的一切工作。

開始使用IronXL很簡單。 該程式庫支持各種部署情境,包括Docker容器Linux環境macOS系統。 對於企業部署,IronXL提供了完整的許可選項,並帶有靈活的許可金鑰管理

該程式庫在資料交換操作上也表現出色。 您可以將XLSX轉換為CSV編寫CSV文件讀取CSV資料,甚至將DataTables轉換為CSV格式。 對於網頁應用而言,IronXL可以無縫對接ASP.NET MVCBlazor框架。

在處理現有的Excel文件時,IronXL提供強大的功能來編輯Excel文件打開工作表以及讀取XLSX文件。 如果專案需要與Visual Basic的整合,您也可以使用VB.NET Excel文件

第一步:
arrow pointer

準備好簡化您的C# Excel匯出了嗎? 立即下載IronXL以滿足您的需求。 存取我們的全面文件以獲得更多教程和範例。 探索API參考以獲取詳細技術規格,了解IronXL如何變革您的Excel自動化工作流程。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預約您的免費即時演示
Booking Badge

全球數百萬工程師的信賴

Iron Software的客戶標誌
獲得無義務諮詢
填寫以下表格或電郵sales@ironsoftware.com
您的資料將始終保密。
全球數百萬工程師的信賴
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立