本問題將重點放在從 ASP.NET MVC 應用程式將資料匯出到 Excel。雖然提供的指南建議了 HTML 到 Excel 的轉換方法,但本文探討如何使用 EPPlus(一個 Excel 套件庫)來建立正確的 Excel 檔案。
EPPlus 提供LoadFromDataTable 和 LoadFromCollection 等方法可使用資料填入 Excel 區域。以下是建立 Excel 檔案的範例:
using (ExcelPackage package = new ExcelPackage()) { var ws = package.Workbook.Worksheets.Add("My Sheet"); ws.Cells["A1"].LoadFromDataTable(dataTable, true); 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); }
EPPlus 允許對匯出的資料進行格式化和套用表格樣式。例如:
var range = ws.Cells["A1"].LoadFromDataTable(table); range.Style.Numberformat.Format = "#,##0.00"; range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right; ws.Cells[1,1].LoadFromDataTable(table, true, TableStyles.Light1);
為了避免串流處理問題,可以建立自訂FileResult 類別來管理EPPlus 套件回應:
public class EpplusResult : FileResult { public EpplusResult(ExcelPackage package) : base("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { if (package == null) { throw new ArgumentNullException("package"); } Package = package; } public ExcelPackage Package { get; private set; } protected override void WriteFile(HttpResponseBase response) { Stream outputStream = response.OutputStream; using (Package) { Package.SaveAs(outputStream); } } }
public FileResult ExportData() { ExcelPackage package = new ExcelPackage(); var ws = package.Workbook.Worksheets.Add("My Sheet"); ... ws.Cells[1, 1].LoadFromDataTable(table, true, TableStyles.Light1); return new EpplusResult(package) { FileDownloadName = "SomeFile.xlsx" }; }
以上是如何使用 EPPlus 將資料從 ASP.NET MVC 應用程式高效能匯出到 Excel?的詳細內容。更多資訊請關注PHP中文網其他相關文章!