如何將資料匯出到Excel
提供的指南示範了使用表格產生HTML 檔案的解決方法,但這種方法在以下情況下可能不可靠: Excel 解釋並匯入這些檔案。更有效的方法是使用 EPPlus 等庫建立專用 Excel 檔案。
使用 EPPlus
EPPlus 提供 LoadFromDataTable 和 LoadFromCollection 方法來填入 Excel 範圍分別使用資料表或通用集合中的資料。列或屬性名稱在載入期間用作標題。
範例程式碼:
public ActionResult ExportData() { DataTable dataTable = GetData(); // Method to retrieve data using (ExcelPackage package = new ExcelPackage()) { var ws = package.Workbook.Worksheets.Add("My Sheet"); ws.Cells["A1"].LoadFromDataTable(dataTable, true); // Load with true to include headers var stream = new MemoryStream(); package.SaveAs(stream); string fileName = "myfilename.xlsx"; string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; stream.Position = 0; return File(stream, contentType, fileName); } }
格式與樣式:
載入資料後,您可以進一步自訂 Excel🎜>
var range = ws.Cells["A1"].LoadFromDataTable(table); range.Style.Numberformat.Format = "#,##0.00"; // Set number format range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right; // Set horizontal alignment
載入資料後,您可以進一步自訂 Excel🎜>
載入資料後,您可以進一步自訂 Excel並設定樣式range:public class EpplusResult : FileResult { public EpplusResult(ExcelPackage package) : base("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { Package = package; } public ExcelPackage Package { get; private set; } protected override void WriteFile(HttpResponseBase response) { using (Package) { Package.SaveAs(response.OutputStream); } } }
自訂輸出:
public FileResult ExportData() { ExcelPackage package = new ExcelPackage(); var ws = package.Workbook.Worksheets.Add("My Sheet"); ... // Load and format data return new EpplusResult(package) { FileDownloadName = "SomeFile.xlsx" }; }
為了緩解建立大檔案時的潛在問題,或避免重複寫入,您可以為EPPlus建立自訂FileResult處理程序packages:
這個自訂結果可以在控制器中使用action:此方法可確保直接寫入輸出流,從而優化大檔案的效能。以上是如何使用EPPlus高效導出資料到Excel?的詳細內容。更多資訊請關注PHP中文網其他相關文章!