Asp.Net Core實現(xiàn)Excel導(dǎo)出功能的實現(xiàn)方法
在web應(yīng)用程序開發(fā)時,或許你會遇到這樣的需求,如何在 Asp.Net Core 中實現(xiàn) excel 或者 word 的導(dǎo)入導(dǎo)出,在 NuGet 上有大量的工具包可以實現(xiàn)這樣的功能,本篇就討論下如何使用 ClosedXML 實現(xiàn) Excel 數(shù)據(jù)導(dǎo)出。
安裝 ClosedXML
如果想實現(xiàn) Excel 的導(dǎo)出功能,在 Asp.Net Core 中有很多的dll可以做到,其中的一個叫做 ClosedXML,你可以通過可視化界面 NuGet package manager 去安裝,也可以使用命令行 NuGet package manager console 執(zhí)行下面命令。
Install-Package ClosedXML
將數(shù)據(jù)導(dǎo)出成 CSV 文件
將數(shù)據(jù)導(dǎo)成 CSV 文件是非常簡單的,畢竟每行數(shù)據(jù)都是用 , 隔開即可,可以用 NuGet 上的 CsvExport 或者 AWright18.SimpleCSVExporter 去實現(xiàn),當(dāng)然你覺得自己很 🐂👃,可以親自操刀實現(xiàn),下面我準(zhǔ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 導(dǎo)出功能。
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ù)導(dǎo)出成 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 轉(zhuǎn)成 內(nèi)存流 (memory stream) 再通過 Controller.Action 的 FileContentResult 返回給客戶端,代碼如下:
using (var stream = new MemoryStream()) { workbook.SaveAs(stream); var content = stream.ToArray(); return File(content, contentType, fileName); }
下載 Excel
下面是導(dǎo)出 Excel 所有的業(yè)務(wù)邏輯代碼,這個 Action 實現(xiàn)了 Excel 導(dǎo)出功能。
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 的所有內(nèi)容,如果你想對 Excel 中的數(shù)據(jù)進行更加復(fù)雜的操控,可以使用Magicodes.IE,關(guān)于 ClosedXML 的更多內(nèi)容,可參考:https://github.com/ClosedXML/ClosedXML
譯文鏈接:https://www.infoworld.com/article/3538413/how-to-export-data-to-excel-in-aspnet-core-30.html
到此這篇關(guān)于Asp.Net Core實現(xiàn)Excel導(dǎo)出功能的文章就介紹到這了,更多相關(guān)Asp.Net Core實現(xiàn)Excel導(dǎo)出內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ASP.NET Core實現(xiàn)AES-GCM加密算法
這篇文章介紹了ASP.NET Core實現(xiàn)AES-GCM加密的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07ASP.NET MVC3網(wǎng)站創(chuàng)建與發(fā)布(1)
這篇文章主要介紹了ASP.NET MVC3網(wǎng)站創(chuàng)建與發(fā)布,根據(jù)文章內(nèi)容大家可以實現(xiàn)發(fā)布網(wǎng)站,感興趣的小伙伴們可以參考一下2015-08-08Repeater控件實現(xiàn)編輯、更新、刪除等操作示例代碼
如何在Repeater控件中實現(xiàn)像GridView控件一樣的編輯、更新、刪除功能?下面有個不錯的示例,感興趣的朋友可以參考下,希望對大家有所幫助2014-01-01ASP.NET Core中調(diào)整HTTP請求大小的幾種方法詳解
這篇文章主要給大家介紹了關(guān)于在ASP.NET Core中如何調(diào)整HTTP請求大小的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12Asp.Net MVC4通過id更新表單內(nèi)容的思路詳解
一個表單一旦創(chuàng)建完,其中大部分的字段便不可再編輯。只能編輯其中部分字段。下面通過本文給大家分享Asp.Net MVC4通過id更新表單內(nèi)容的思路詳解,需要的朋友參考下吧2017-07-07使用visual studio自動創(chuàng)建IIS虛擬目錄
使用visual studio自動創(chuàng)建IIS虛擬目錄,需要的朋友可以參考一下2013-02-02C#精髓 GridView72大絕技 學(xué)習(xí)gridview的朋友必看
C#精髓 GridView72大絕技 學(xué)習(xí)gridview的朋友可以參考下。2009-10-10將Excel中數(shù)據(jù)導(dǎo)入到Access數(shù)據(jù)庫中的方法
將Excel中數(shù)據(jù)導(dǎo)入到Access數(shù)據(jù)庫中的方法,需要的朋友可以參考一下2013-03-03JQuery為用戶控件(ASCX)賦值與接口的應(yīng)用
在網(wǎng)頁動態(tài)加載用戶控件,并使用JQuery為來把網(wǎng)頁處理的值傳給用戶控件,此文利用了接口方面的知識,感興趣的各位可以參考下哈2013-03-03CheckBox為CheckBoxList實現(xiàn)全選或全取消選擇(js代碼實現(xiàn))
在管理商品后臺是,由于CheckBoxList的選擇太多,用戶需要一個全選或全取消的功能,這樣操作起來會提高效率同時可以減少誤點等,本文將教大家如何實現(xiàn),有需要的朋友可以參考下,望本文對你有所幫助2013-01-01