Asp.Net Core實現(xiàn)Excel導出功能的實現(xiàn)方法
在web應用程序開發(fā)時,或許你會遇到這樣的需求,如何在 Asp.Net Core 中實現(xiàn) excel 或者 word 的導入導出,在 NuGet 上有大量的工具包可以實現(xiàn)這樣的功能,本篇就討論下如何使用 ClosedXML 實現(xiàn) Excel 數(shù)據(jù)導出。
安裝 ClosedXML
如果想實現(xiàn) Excel 的導出功能,在 Asp.Net Core 中有很多的dll可以做到,其中的一個叫做 ClosedXML,你可以通過可視化界面 NuGet package manager 去安裝,也可以使用命令行 NuGet package manager console 執(zhí)行下面命令。
Install-Package ClosedXML
將數(shù)據(jù)導出成 CSV 文件
將數(shù)據(jù)導成 CSV 文件是非常簡單的,畢竟每行數(shù)據(jù)都是用 , 隔開即可,可以用 NuGet 上的 CsvExport 或者 AWright18.SimpleCSVExporter 去實現(xiàn),當然你覺得自己很 🐂👃,可以親自操刀實現(xiàn),下面我準備親自實現(xiàn)一下,先看下面定義的 Author 類。
public class Author { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } }
然后塞一些數(shù)據(jù)到 authors 列表中,如下代碼所示:
List<Author> authors = new List<Author> { new Author { Id = 1, FirstName = "Joydip", LastName = "Kanjilal" }, new Author { Id = 2, FirstName = "Steve", LastName = "Smith" }, new Author { Id = 3, FirstName = "Anand", LastName = "Narayaswamy"} };
定義一個 DownloadCommaSeperatedFile 方法,用于實現(xiàn) Action 的 csv 導出功能。
public IActionResult DownloadCommaSeperatedFile() { try { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("Id,FirstName,LastName"); foreach (var author in authors) { stringBuilder.AppendLine($"{author.Id}, {author.FirstName},{author.LastName}"); } return File(Encoding.UTF8.GetBytes (stringBuilder.ToString()), "text/csv", "authors.csv"); } catch { return Error(); } }
將數(shù)據(jù)導出成 XLSX 文件
Excel 中的 workbook 是由若干個 worksheet 組成,下面的代碼可用來生成一個 workbook。
var workbook = new XLWorkbook();
接下來生成一個 worksheet,然后在 worksheet 中填一些數(shù)據(jù),代碼如下:
IXLWorksheet worksheet = workbook.Worksheets.Add("Authors"); worksheet.Cell(1, 1).Value = "Id"; worksheet.Cell(1, 2).Value = "FirstName"; worksheet.Cell(1, 3).Value = "LastName"; for (int index = 1; index <= authors.Count; index++) { worksheet.Cell(index + 1, 1).Value = authors[index - 1].Id; worksheet.Cell(index + 1, 2).Value = authors[index - 1].FirstName; worksheet.Cell(index + 1, 3).Value = authors[index - 1].LastName; }
最后,將 workbook 轉成 內存流 (memory stream) 再通過 Controller.Action 的 FileContentResult 返回給客戶端,代碼如下:
using (var stream = new MemoryStream()) { workbook.SaveAs(stream); var content = stream.ToArray(); return File(content, contentType, fileName); }
下載 Excel
下面是導出 Excel 所有的業(yè)務邏輯代碼,這個 Action 實現(xiàn)了 Excel 導出功能。
public IActionResult DownloadExcelDocument() { string contentType = "application/vnd.openxmlformats- officedocument.spreadsheetml.sheet"; string fileName = "authors.xlsx"; try { using (var workbook = new XLWorkbook()) { IXLWorksheet worksheet = workbook.Worksheets.Add("Authors"); worksheet.Cell(1, 1).Value = "Id"; worksheet.Cell(1, 2).Value = "FirstName"; worksheet.Cell(1, 3).Value = "LastName"; for (int index = 1; index <= authors.Count; index++) { worksheet.Cell(index + 1, 1).Value = authors[index - 1].Id; worksheet.Cell(index + 1, 2).Value = authors[index - 1].FirstName; worksheet.Cell(index + 1, 3).Value = authors[index - 1].LastName; } using (var stream = new MemoryStream()) { workbook.SaveAs(stream); var content = stream.ToArray(); return File(content, contentType, fileName); } } } catch(Exception ex) { return Error(); } }
這篇就是 ClosedXML 的所有內容,如果你想對 Excel 中的數(shù)據(jù)進行更加復雜的操控,可以使用Magicodes.IE,關于 ClosedXML 的更多內容,可參考:https://github.com/ClosedXML/ClosedXML
譯文鏈接:https://www.infoworld.com/article/3538413/how-to-export-data-to-excel-in-aspnet-core-30.html
到此這篇關于Asp.Net Core實現(xiàn)Excel導出功能的文章就介紹到這了,更多相關Asp.Net Core實現(xiàn)Excel導出內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
ASP.NET Core實現(xiàn)AES-GCM加密算法
這篇文章介紹了ASP.NET Core實現(xiàn)AES-GCM加密的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07ASP.NET MVC3網站創(chuàng)建與發(fā)布(1)
這篇文章主要介紹了ASP.NET MVC3網站創(chuàng)建與發(fā)布,根據(jù)文章內容大家可以實現(xiàn)發(fā)布網站,感興趣的小伙伴們可以參考一下2015-08-08Repeater控件實現(xiàn)編輯、更新、刪除等操作示例代碼
如何在Repeater控件中實現(xiàn)像GridView控件一樣的編輯、更新、刪除功能?下面有個不錯的示例,感興趣的朋友可以參考下,希望對大家有所幫助2014-01-01ASP.NET Core中調整HTTP請求大小的幾種方法詳解
這篇文章主要給大家介紹了關于在ASP.NET Core中如何調整HTTP請求大小的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2017-12-12使用visual studio自動創(chuàng)建IIS虛擬目錄
使用visual studio自動創(chuàng)建IIS虛擬目錄,需要的朋友可以參考一下2013-02-02C#精髓 GridView72大絕技 學習gridview的朋友必看
C#精髓 GridView72大絕技 學習gridview的朋友可以參考下。2009-10-10將Excel中數(shù)據(jù)導入到Access數(shù)據(jù)庫中的方法
將Excel中數(shù)據(jù)導入到Access數(shù)據(jù)庫中的方法,需要的朋友可以參考一下2013-03-03CheckBox為CheckBoxList實現(xiàn)全選或全取消選擇(js代碼實現(xiàn))
在管理商品后臺是,由于CheckBoxList的選擇太多,用戶需要一個全選或全取消的功能,這樣操作起來會提高效率同時可以減少誤點等,本文將教大家如何實現(xiàn),有需要的朋友可以參考下,望本文對你有所幫助2013-01-01