使用 IRONXL 在 C# 中如何將一組對象導出到 Excel Jordi Bardia 發表日期:10月 19, 2025 Download IronXL NuGet 下載 DLL 下載 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article 將對象集合匯出到 Excel 文件是業務應用程序中的基本要求。 無論是生成報告、匯出數據以共享見解,還是創建 Excel 工作表進行備份,開發人員都需要一種可靠的方法將List<T>對象轉換為專業的電子表格。 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 Package Manager Console 安裝該庫: Install-Package IronXL.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"); } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 此示例代碼演示了如何使用 IronXL 將數據從List<Employee> 匯出到 Excel。 它首先將員工列表轉換為 DataTable,然後手動將列標題和行寫入工作表。 IronXL 自動處理諸如 int、string 和 DateTime 類型的數據類型,確保在生成的電子表格中進行整潔的格式化。 最後, Excel 保存功能生成了一個 XLSX 文件,可以保存為 EmployeeReport.xlsx,提供了一種簡單且高效的方法,將結構化的 C# 數據轉換為專業的Excel 報告。 如何匯出複雜的業務對象? 現實世界的 .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、價格、庫存水平和補貨日期等詳細信息的產品對象列表,然後為每個項目計算一個派生值 CalculatedValue。 數據被轉換為 DataTable,寫入帶有標題的 Excel 工作表,並通過自動調整列大小進行可讀性格式化。 IronXL 無縫處理小數、布爾值和日期等數據類型,確保專業電子表格輸出。 結果 ProductInventory.xlsx 提供了一個乾淨的數據驅動庫存匯出,理想用於業務報告或分析。 如何添加專業格式? 用 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. 立即開始將列表匯出到 Excel IronXL 將 Excel 生成的複雜任務轉變為簡單的可維護代碼。 其智能 ImportData 方法消除了對 Microsoft Office 依賴的需要,同時提供滿足企業需求的專業結果。 該庫的全面功能集處理從基本列表匯出到帶有樣式和格式的複雜數據轉換的所有方面。 立即開始使用 IronXL。 免費啟動 準備簡化您的 C# Excel 匯出嗎? 立即下載 IronXL,隨著您的需求擴展而成長。 瀏覽我們的全面文檔以獲取更多教程和示例。 常見問題解答 IronXL 的主要功能是什麼? IronXL 提供了一個簡化的解決方案,將物件集合(如 List)導出到 Excel 文件,無需傳統方法的複雜性,適用於 .NET 環境。 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 試算表,適合業務報告和資料分析。 IronXL 提供了什麼優勢,超越了傳統的 Excel 文件創建方法? IronXL 消除了創建 Excel 文件時的傳統複雜性和依賴,為開發人員提供了一種更高效且可靠的方法。 Jordi Bardia 立即與工程團隊聊天 軟體工程師 Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 發表日期 10月 27, 2025 如何在 C# 中創建 Excel 樞紐分析表 學習使用 C# Interop 和 IronXL 創建 Excel 中的樞紐分析表,這是一個清晰的分步指南。 閱讀更多 發表日期 10月 27, 2025 如何在 C# 中將 DataGridView 匯出為 Excel 並保留列標題 學習如何在 C# 教程中使用 IronXL library 將 DataGridView 資料匯出為 Excel 同時保留列標題。分步教學。 閱讀更多 發表日期 10月 27, 2025 如何使用 IronXL 的 .NET Core CSV 讀取器 學習使用 IronXL 作為 .NET Core CSV 讀取器的有效方法,提供實用範例。 閱讀更多 如何使用 IronXL 在 C# 中將數據保存為 CSV如何使用 C# CSV 函式庫讀寫...
發表日期 10月 27, 2025 如何在 C# 中將 DataGridView 匯出為 Excel 並保留列標題 學習如何在 C# 教程中使用 IronXL library 將 DataGridView 資料匯出為 Excel 同時保留列標題。分步教學。 閱讀更多