IRONSOFTWAREHOME
USING IRONXL

C# 將列表物件導出到 Excel

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

在商業應用程式中,將物件集合匯出為Excel檔案是一項基本要求。 無論是生成報告、分享資料洞察力,還是建立Excel工作表進行備份,開發人員都需要一個可靠的方法將List<t>物件轉換成專業的試算表。 IronXL提供了一個解決方案,可以消除在.NET 10、.NET Core或.NET Framework中建立Excel檔案的傳統困難——不需要在伺服器上安裝Microsoft Office。

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

傳統的方法通常涉及Microsoft Office Interop,這需要在伺服器上安裝MS Excel,並產生部署上的麻煩。 使用反射手動逐個填充儲存格既耗時又容易出錯。 IronXL的資料匯入功能通過在資料來源和Excel欄位標題之間進行智能屬性映射解決了這些問題,不需要MS Office或複雜的反射程式碼。

該程式庫自動處理型別轉換,支持巢狀物件,並保持不同格式(如CSV檔和XLSX檔)之間的資料完整性。 對於在C# Excel運作沒有Interop的開發人員來說,IronXL是現代.NET專案需要可靠的Excel生成和資料匯入/匯出功能的理想選擇。

IronXL如何簡化物件匯出?

IronXL消除了COM註冊、Office授權和interop組件的需求。 當您將List<t>匯出到Excel時,該程式庫會:

  • 直接將物件屬性映射到欄位標題
  • 將.NET型別(bool)轉換為其正確的Excel表示形式
  • 允許對儲存格值、範圍和格式進行細緻控制
  • 通過單一方法呼叫將輸出儲存為XLSX、XLS、CSV和其他格式

這種方法意味著您可以獲得乾淨的專業試算表輸出,而不需要編寫數百行的樣板程式碼。 您還可以在之後從Excel匯回資料,使資料回圈工作流程變得簡單。

如何安裝IronXL?

開始使用IronXL需要最小的設置。通過NuGet套件管理器控制台安裝該程式庫:

PM > Install-Package IronXL.Excel

或者使用.NET CLI:

dotnet add package IronXL.Excel

安裝後,將using IronXL;指令新增到您的文件中。不需要其他Office依賴項或運行時安裝。

如何將簡單的清單匯出到Excel?

以下範例演示如何使用頂層語句,將Employee物件清單匯出到XLSX文件中,這是.NET 10中首選的風格:

using IronXL;
using System.Data;

// Define the Employee model
record Employee(int Id, string Name, string Department, decimal Salary, DateTime HireDate);

// Create sample employee data
List<Employee> employees =
[
    new(1, "Alice Johnson", "Engineering", 95000, new DateTime(2020, 3, 15)),
    new(2, "Bob Smith",    "Marketing",   75000, new DateTime(2021, 7, 1)),
    new(3, "Carol Williams","Engineering",105000, new DateTime(2019, 11, 20))
];

// Build a DataTable from the list
DataTable dataTable = new();
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 emp in employees)
    dataTable.Rows.Add(emp.Id, emp.Name, emp.Department, emp.Salary, emp.HireDate);

// Create an IronXL workbook and worksheet
WorkBook workbook  = new();
WorkSheet worksheet = workbook.CreateWorkSheet("Employees");

// Write headers
for (int col = 0; col < dataTable.Columns.Count; col++)
    worksheet.SetCellValue(0, col, dataTable.Columns[col].ColumnName);

// Write data rows
for (int row = 0; row < dataTable.Rows.Count; row++)
    for (int col = 0; col < dataTable.Columns.Count; col++)
        worksheet.SetCellValue(row + 1, col, dataTable.Rows[row][col]);

// Save as XLSX
workbook.SaveAs("EmployeeReport.xlsx");
Console.WriteLine("EmployeeReport.xlsx saved.");

此範例將DataTable,然後將標題和行寫入IronXL工作表中。 IronXL自動處理DateTime等資料型別,確保生成的試算表具有良好的格式。 Excel儲存功能生成了一個可在任何試算表應用程式中打開的XLSX檔案。

C# 使用IronXL將物件清單匯出到Excel:圖像 1 - 與C#匯出物件清單到Excel 相關的圖像 1 共3

如何匯出複雜的業務物件?

真實世界的.NET應用程式通常涉及更複雜的資料結構。 以下範例生成了一個包含計算屬性的產品庫存報告:

using IronXL;
using System.Data;

// Define the Product model with a computed property
record Product(
    string SKU,
    string ProductName,
    string Category,
    decimal Price,
    int StockLevel,
    bool IsActive,
    DateTime LastRestocked)
{
    public decimal CalculatedValue => Price * StockLevel;
}

// Build the product list
List<Product> products =
[
    new("TECH-001", "Wireless Mouse",      "Electronics",     29.99m, 150, true,  DateTime.Now.AddDays(-5)),
    new("TECH-002", "Mechanical Keyboard", "Electronics",     89.99m,  75, true,  DateTime.Now.AddDays(-12)),
    new("OFF-001",  "Desk Organizer",      "Office Supplies", 15.99m,   0, false, DateTime.Now.AddMonths(-1))
];

// Populate a DataTable
DataTable dt = new();
dt.Columns.Add("SKU",             typeof(string));
dt.Columns.Add("ProductName",     typeof(string));
dt.Columns.Add("Category",        typeof(string));
dt.Columns.Add("Price",           typeof(decimal));
dt.Columns.Add("StockLevel",      typeof(int));
dt.Columns.Add("IsActive",        typeof(bool));
dt.Columns.Add("LastRestocked",   typeof(DateTime));
dt.Columns.Add("CalculatedValue", typeof(decimal));

foreach (var p in products)
    dt.Rows.Add(p.SKU, p.ProductName, p.Category, p.Price,
                p.StockLevel, p.IsActive, p.LastRestocked, p.CalculatedValue);

// Create the workbook
WorkBook  wb = WorkBook.Create();
WorkSheet ws = wb.CreateWorkSheet("Inventory");

// Write column headers
string[] headers = ["SKU","ProductName","Category","Price",
                    "StockLevel","IsActive","LastRestocked","CalculatedValue"];
for (int col = 0; col < headers.Length; col++)
    ws.SetCellValue(0, col, headers[col]);

// Write data rows
for (int row = 0; row < dt.Rows.Count; row++)
    for (int col = 0; col < dt.Columns.Count; col++)
        ws.SetCellValue(row + 1, col, dt.Rows[row][col]);

// Auto-size columns for readability
for (int col = 0; col < headers.Length; col++)
    ws.AutoSizeColumn(col);

wb.SaveAs("ProductInventory.xlsx");
Console.WriteLine("ProductInventory.xlsx saved.");

此程式碼構建了一個包含SKU、價格、庫存水平和補貨日期等詳情的CalculatedValue。 IronXL處理如十進位、布林和日期等資料型別,確保專業的試算表輸出。 結果,ProductInventory.xlsx,提供了一個適合於商業報告或分析的乾淨的資料導向庫存匯出。 如果您的現有程式碼庫已經使用DataTable物件工作,您還可以直接將DataTable匯出到Excel

C# 使用IronXL將物件清單匯出到Excel:圖像 2 - 複雜業務物件的範例輸出

如何控制欄寬和行高?

在寫入資料之後,您可以以程式化方式控制試算表的視覺佈局。 IronXL的AutoSizeColumn方法調整每個欄以適應其內容。 或者,您可以設定具體的欄寬度,或者新增和移除欄和行來調整工作表結構然後再儲存。

對於行高,IronXL公開了行級屬性,讓您可以設置固定的像素高度——這在工作表將被列印或作為PDF共享時很有用。 一致的欄和行大小也改善了當Excel文件在不同螢幕解析度上開啟或以不同比例列印時的可讀性,這對於分發給外部利益相關者的報告尤其重要。

如何新增專業的格式化?

格式化將基本匯出轉變為精美的報告。 IronXL的樣式API對任何儲存格或範圍公開了字體、顏色、邊框和數字格式設置:

using IronXL;

WorkBook  wb = WorkBook.Load("ProductInventory.xlsx");
WorkSheet ws = wb.DefaultWorkSheet;

// Bold header row with a blue background and white text
Range headerRange = ws["A1:H1"];
headerRange.Style.Font.Bold            = true;
headerRange.Style.BackgroundColor      = "#4472C4";
headerRange.Style.Font.Color           = "#FFFFFF";

// Format the Price column as currency
Range priceColumn = ws["D2:D100"];
priceColumn.Style.NumberFormat = "$#,##0.00";

// Highlight low-stock rows in red
for (int row = 2; row <= 4; row++)
{
    var stockCell = ws[$"E{row}"];
    if (stockCell.IntValue < 10)
        stockCell.Style.BackgroundColor = "#FF6B6B";
}

wb.SaveAs("FormattedInventory.xlsx");
Console.WriteLine("FormattedInventory.xlsx saved.");

這些樣式選項將原始資料匯出轉變為行政準備的報告。 加粗的標題和背景顏色建立視覺層次。 數字格式確保貨幣值正確顯示。 條件格式高亮顯示關鍵的業務指標,例如低庫存水平,使匯出的Excel試算表對於庫存管理立即具有行動性。 您可以了解更多關於高級儲存格格式化邊框樣式的資訊,進一步增強匯出。

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

如何以程式化的方式應用條件格式?

IronXL支持反映Excel內建功能的條件格式規則。 您可以根據儲存格值閾值、文字匹配或日期範圍定義規則。 一旦將規則應用到一個範圍,IronXL就會寫入相應的XLSX格式元資料,因此當在Excel或Google Sheets中打開時,文件能夠按預期運行。

當匯出的文件將由非技術利益相關者查看時,這特別有用,他們可能期望顏色編碼的報告而不是普通的表格資料。

如何在匯出之前排序和篩選資料?

您可以在將List<t>寫入Excel之前對其進行排序和篩選。 使用標準LINQ,您可以按部門和薪水排序員工,或僅篩選活躍項目的產品。 一旦準備好篩選後的清單,使用上面展示的欄逐列方法將其寫入工作表。

IronXL還直接在活頁簿中支持排序已填充範圍內的儲存格——允許在不返回原始集合的情況下進行填充後排序。

如何將清單匯出為其他文件格式?

IronXL不僅限於XLSX。 同一WorkBook物件可以用一個方法更改保存為多種格式:

  • XLSX——現代Excel格式的預設值:workbook.SaveAs("output.xlsx")
  • XLS——支持舊版Office版本的舊版Excel格式
  • CSV——為資料管道相容性的逗號分隔值
  • TSV——製表符分隔值

將工作表匯出為CSV格式時,每個工作表成為一個獨立的CSV文件。這使IronXL不僅對於終端使用者報告有用,還對於生成由ETL管道、資料科學工具或第三方API消耗的中間資料文件很有用。對於匯出DataGridView資料來說,這是一種在Windows Forms應用程式中的常見模式——IronXL可以乾淨地插入而無需額外的適配器。

如何高效處理大量資料集?

當匯出數千行時,性能成為一個問題。 請記住以下指導方針:

  • 首先填充一個DataTable,然後在迴圈中寫入行,而不是反覆多次從反射調用單獨的儲存格設置方法。
  • 在所有資料寫入後,在調用AutoSizeColumn,因為這是一個讀取掃描操作。
  • 避免在迴圈中重新打開活頁簿以進行重新閱讀和重新保存——在記憶體中構建完整的資料集,然後只調用SaveAs一次。
  • 對於超過100,000行的資料集,考慮將匯出分成多個工作表,以保持Excel的行數限制並保持文件大小可管理。

IronXL還提供了一個ASP.NET Core匯出工作流程,其中XLSX文件直接寫入MemoryStream,並作為文件下載響應返回,完全繞過磁碟I/O。

如何在ASP.NET Core中將清單匯出到Excel?

在構建Web API或Razor Pages應用程式時,您通常希望將Excel文件作為HTTP響應返回,而不是保存到磁碟。 以下模式從控制器操作返回FileContentResult

控制器注入一個服務,該服務構建Content-Disposition: attachment標頭一起返回字節。 此方法適用於任何.NET 10簡約API或MVC控制器。

欲了解完整的演練,請參考ASP.NET Core Excel匯出教程Blazor匯出教程,如果您正在構建Blazor WebAssembly或Blazor Server應用程式。

如何今天就開始使用IronXL?

IronXL將Excel生成任務轉變為可維護的程式碼。 它的API消除了Microsoft Office依賴項,同時提供符合企業需求的專業結果。 該程式庫的功能集涵蓋從基本清單匯出到帶有樣式和格式化的複雜資料轉換的所有方面。

您還可以使用IronXL閱讀和編輯現有工作簿將Excel資料匯出到DataTable以便進一步處理,或建立樞紐分析表以進行摘要報告。 將這些功能與上面展示的格式選項相結合,可以生成在分發前無需手動調整的試算表。

IronXL在NuGet上可用,並且與任何目標.NET 10、.NET 8或.NET Framework 4.6.2+的專案相容。 Open XML SDK是IronXL讀寫的XLSX文件格式的基礎,讓您確信生成的文件符合ECMA-376標準,並在任何OOXML相容的應用程式中正確打開。

第一步:
arrow pointer

準備好開始將C#清單匯出到Excel了嗎? 立即下載IronXL,感受如何快速將清單物件轉換為Excel在您的.NET應用程式中。 在生產部署中,請探索隨著需求擴展的靈活授權選項。 存取文件以獲取更多教程和範例。

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天試用金鑰
無需信用卡或帳戶建立