Bagaimanakah cara saya mengeksport data jadual ke Excel menggunakan kaedah yang betul dan menetapkan jenis MIME yang betul untuk fail Excel (xlsx)?
The panduan yang disediakan tidak menunjukkan cara membuat fail Excel; sebaliknya, ia menggunakan penyelesaian yang menjana fail HTML yang mengandungi jadual. Excel mungkin menghadapi ralat pemformatan apabila cuba mengimport fail CSV atau HTML yang mengandungi jadual yang tidak mematuhi tetapan lalainya.
Membuat fail Excel tulen utilizzando EPPlus adalah lebih mudah. LoadFromDataTable dan LoadFromCollection daripada EPPlus boleh digunakan untuk mengisi julat Excel dengan data daripada DataTable atau koleksi generik. Pengepala dijana menggunakan nama lajur atau sifat, masing-masing.
public ActionResult ExportData() { // Load data into a DataTable using (ExcelPackage package = new ExcelPackage()) { var ws = package.Workbook.Worksheets.Add("My Sheet"); // true generates headers 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); } }
LoadFromDataTable dan LoadFromCollection mengembalikan julat sel Excel yang boleh digunakan untuk menggunakan pemformatan pada jadual:
var range = ws.Cells["A1"].LoadFromDataTable(table); range.Style.Numberformat.Format = "#,##0.00"; range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;
Selain itu , anda boleh menggunakan gaya jadual pada julat:
ws.Cells[1,1].LoadFromDataTable(table, true, TableStyles.Light1);
Memformat, formula, Jadual Pangsi dan pengendalian jadual semuanya boleh didapati dalam wiki GitHub pustaka.
Menyimpan ke MemoryStream mungkin tidak sesuai untuk helaian yang lebih besar kerana penulisan data pendua (ke memori dan aliran output). Walau bagaimanapun, mengembalikan FileResult terus daripada tindakan MVC adalah tidak digalakkan. Penyelesaiannya adalah untuk mencipta FileResult yang disesuaikan untuk pakej EPPlus:
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) { Package.SaveAs(response.OutputStream); } }
Ini membolehkan perkara berikut dalam tindakan anda:
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"}; }
Atas ialah kandungan terperinci Bagaimana untuk Mengeksport Data Jadual Data ke Fail Excel (.xlsx) dengan Jenis dan Pemformatan MIME yang Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!