[C#] .Net 下操作 Excel 新選擇 EPPlus - 超簡單將 List 輸出成 Excel 檔案

2024-02-16

上一篇文章我們聊到如何快速地匯入資料透過 ,EpplusTableColumn 裡面的 Header 來比對

並且還原成為 Staff 的物件 ,今天我們聊一下,如何簡單的,把 List<Staff> 直接輸出成 Excel 檔案

這樣就不用在那邊數格子..



簡單的說我有一堆資料 List<Staff> 並且我在 Class 中的  Property 中的  EpplusTableColumn Attribute 都有設定 Hedaer , Hidden, NumberFormat 等資訊 

其實設定好輸出就很簡單


Staff.cs :

public class Staff { [EpplusTableColumn(Order = 1, Header = "員工編號")] [Required] public string Id { get; set; } [Column(1)] [EpplusTableColumn(Order = 2, Header = "姓名")] public string Name { get; set; } //日期的話要設定 NumberFormat 才會顯示正確 [EpplusTableColumn(Order = 3, Header = "到值日", NumberFormat = "yyyy/MM/dd")] public DateTime Create { get; set; } [EpplusTableColumn(Order = 4, Header = "電話")] public string Mobile { get; set; } [EpplusTableColumn(Order = 5, Header = "薪水")] public decimal Salary { get; set; } [EpplusTableColumn(Hidden =true)] public string Memo { get; set; } }


接下來就是輸出 Excel 檔案的程式碼

var staffs = new List<Staff> { new Staff{ Id = "S1", Name="DONMA", Mobile="0912456789", Salary=999_999m, Create = new DateTime(1950, 3, 15) }, new Staff{Id = "S2", Name="JOHN", Mobile="0922456789", Salary=199_999m, Create = new DateTime(1962, 6, 10)}, new Staff{ Id = "S1", Name="DELTA", Mobile="0912456799", Salary=299_999m, Create = new DateTime(1971, 10, 2)} }; ExportListDataToExcel(staffs, "SHEET1", AppDomain.CurrentDomain.BaseDirectory + "sample2.xlsx"); private static void ExportListDataToExcel<T>(List<T> data,string sheetName,string filePath) { ExcelPackage.LicenseContext = LicenseContext.NonCommercial; using (var package = new ExcelPackage(filePath)) { // using the Actor class above var sheet = package.Workbook.Worksheets.Add(sheetName); sheet.Cells["A1"].LoadFromCollection(data,true); package.Save(); } }


Result:



有沒有異常的簡單,而且非常舒服不用在那邊數格子,如果有搞過輸出  Excel 一定知道我在說什麼



當麻許的碎念筆記 2014 | Donma Hsu Design.