如何在 C# 中將物件清單匯出到 Excel
IronXL 允許開發人員匯出列表無需依賴 MS Office,即可在 C# 中直接將物件匯入 Excel 文件,透過簡單的ImportData方法自動處理類型轉換和屬性映射,將集合轉換為專業的 XLSX 電子表格。
將物件集合匯出到 Excel 檔案是商業應用的基本需求。 無論您是產生報告、分享見解還是建立備份,您都需要一種可靠的方法來轉換List將物件轉換為專業電子表格。 IronXL提供了一個簡化的解決方案,消除了在 .NET、.NET Core 或 .NET Framework 中建立 Excel 檔案的傳統複雜性。
為什麼將清單匯出到 Excel 檔案會遇到挑戰?
將資料匯出到 Excel 的傳統方法通常涉及 Microsoft Office Interop,這需要在伺服器上安裝 Excel,並會帶來部署上的麻煩。 手動逐個細胞進行反射計數既費時又容易出錯。 IronXL 強大的資料匯入功能透過在資料來源和 Excel 列標題之間進行智慧屬性對應來解決這些問題,而無需 MS Office 或複雜的反射程式碼。
此庫可自動處理類型轉換,支援嵌套對象,並能跨不同格式(如 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");
}
}此範例程式碼示範如何將List<Employee>中的資料匯出到 Excel。 List<Employee>使用 IronXL。 它首先將員工清單轉換為DataTable ,然後手動將列標題和行寫入工作表。 IronXL 可自動處理 int、string 和DateTime等資料類型,確保產生的電子表格格式清晰。 最後,Excel 保存功能會產生一個名為EmployeeReport 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");
}
}此程式碼示範如何使用 IronXL 在 Excel 中產生動態產品庫存報表。 它建立一個包含 SKU、價格、庫存水準和補貨日期等詳細資訊的產品物件列表,然後為每個項目計算一個衍生的CalculatedValue 。 資料被轉換為DataTable ,寫入帶有標題的 Excel 工作表,並使用自動調整列寬的方式進行格式化以提高可讀性。 IronXL 可以無縫處理小數、布林值和日期等資料類型,確保專業的電子表格輸出。 產生ProductInventory文件提供了一個清晰、數據驅動的庫存匯出文件,非常適合用於業務報告或分析。
處理複雜物件時,您可能還需要管理不同資料類別的工作表,或在單一工作簿中建立多個工作表。 IronXL 支援進階工作表操作,讓您可以以邏輯方式組織匯出的資料。 此外,您還可以選擇特定範圍進行目標資料操作,或對儲存格進行排序,以按有意義的順序顯示資料。
! Excel電子表格顯示了產品庫存匯出訊息,包含SKU、產品名稱、類別、價格、庫存水準、是否在售狀態、上次補貨日期和計算值等列,涵蓋各種電子產品和辦公用品。
如何新增專業格式?
利用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");這些樣式選項可以將原始資料匯出轉換為可供高階主管閱讀的報表。 將集合匯出到 Excel 時,使用帶有背景顏色的粗體標題可以建立視覺層次結構。 數位格式化功能可確保貨幣數值以專業的方式顯示。 條件格式突顯關鍵業務指標,例如低庫存水平,使匯出的 Excel 電子表格能夠立即用於庫存管理。 了解更多進階儲存格格式設定和邊框樣式,以進一步增強您的匯出功能。
除了基本格式設定外,IronXL 還支援 建立 Excel 圖表以視覺化匯出資料等進階功能。 您也可以新增超連結來連接相關資料點或外部資源,凍結窗格以便更好地瀏覽大型資料集,甚至合併儲存格以建立複雜的報表版面配置。
! 專業格式的 Excel 庫存電子表格,顯示 SKU、產品名稱、類別、價格、庫存水準(使用條件格式以紅色突出顯示零庫存)、IsActive 狀態、上次補貨日期和計算值列。
使用 IronXL 的最佳入門方法是什麼?
IronXL 將複雜的 Excel 產生任務轉換為簡單、易於維護的程式碼。 其智慧的ImportData方法無需依賴 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 檔案。
!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110--
準備好簡化您的 C# Excel 匯出流程了嗎? 立即下載 IronXL,它可根據您的需求進行擴展。 請造訪我們的完整文檔,以獲取更多教學和範例。 請查閱API 參考文件以取得詳細的技術規範,並了解 IronXL 如何改變您的 Excel 自動化工作流程。
常見問題解答
IronXL的主要功能是什麼?
IronXL 提供了一種簡化的解決方案,用於匯出物件集合,例如清單。在 .NET 環境下,無需傳統方法的複雜性,即可將資料匯出至 Excel 檔案。
IronXL 如何簡化資料匯出到 Excel 的過程?
IronXL 提供了一個 ImportData 方法,簡化了這個過程,讓開發人員能夠輕鬆地將 C# 清單和複雜物件轉換為專業的 Excel 電子表格,而無需 Office Interop。
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 電子表格,適用於商業報告和數據分析。
與傳統的Excel檔案建立方法相比,IronXL有哪些優點?
IronXL 消除了建立 Excel 檔案時涉及的傳統複雜性和依賴性,為開發人員提供了更有效率、更可靠的方法。






