使用ASP.NET Core將數據導出到Excel


 

 

當需要從 ASP.NET Core 導出數據到 Excel 時,有幾個不同的選項。 如果您需要簡單的表格數據,那么生成一個 CSV 文件就足夠了。 如果您需要嵌入顏色和公式,您將需要更高級的東西。 讓我們從簡單的開始。

對於本文中的示例,我將使用帶有一些硬編碼數據的ASP.NET Core控制器。 在實際的應用程序中,這些數據將來自用戶輸入,數據庫或類似的數據:

 

 1 public class HomeController : Controller
 2 {
 3     private List<User> users = new List<User>
 4     {
 5         new User { Id = 1, Username = "DoloresAbernathy" },
 6         new User { Id = 2, Username = "MaeveMillay" },
 7         new User { Id = 3, Username = "BernardLowe" },
 8         new User { Id = 4, Username = "ManInBlack" }
 9     };
10 
11     public HomeController()
12     {
13     }
14 }

 

導出為CSV

導出數據的最簡單方法是作為逗號分隔值(CSV)文件。 有可用的NuGet軟件包可以幫助您解決此問題,但對於本文,我將手動創建CSV:

 1 public IActionResult Csv()
 2 {
 3     var builder = new StringBuilder();
 4     builder.AppendLine("Id,Username");
 5     foreach (var user in users)
 6     {
 7         builder.AppendLine($"{user.Id},{user.Username}");
 8     }
 9 
10     return File(Encoding.UTF8.GetBytes(builder.ToString()), "text/csv", "users.csv");
11 }

 

使用System.Text命名空間中可用的StringBuilder類,我在第一行中添加標題,然后為每個用戶添加一行。 最后,我使用ASP.NET Core中提供的File helper返回生成的CSV。 通過將內容作為文件返回,瀏覽器將自動將內容下載為名為users.csv的CSV文件。

 

 

導出為XLSX

 

如果您要導出的文件比簡單的表格數據復雜得多,則需要將數據導出為真實的Excel文件。 CSV文件不能包含顏色,公式等。

由於 XLSX 文件是基於 XML 的,您可以自己生成內容。 我不建議這樣做,因為格式很復雜,而且有很多好的 NuGet 包可用。 過去我一直在使用 ClosedXML 包,我很高興看到這個包仍然在開發和支持中。 Net Core. 我還研究了 EPPlus 和 DocumentFormat 等替代軟件包。 來自 Microsoft 的 OpenXml,但是它們都沒有提供 ClosedXML (IMO)這樣簡單的 API。

 

要使用ClosedXML生成XLSX文件,請先安裝以下NuGet軟件包:

Install-Package ClosedXML

 

然后添加一個新的控制器操作。 對於這篇文章,為了保持一致性,我已經像 CSV 例子中那樣格式化了輸出。 Closedxml 提供了一組豐富的特性,包括顏色、計算等等。 查看他們的文檔了解更多細節。 下面是代碼:

 1 public IActionResult Excel()
 2 {
 3     using (var workbook = new XLWorkbook())
 4     {
 5         var worksheet = workbook.Worksheets.Add("Users");
 6         var currentRow = 1;
 7         worksheet.Cell(currentRow, 1).Value = "Id";
 8         worksheet.Cell(currentRow, 2).Value = "Username";
 9         foreach (var user in users)
10         {
11             currentRow++;
12             worksheet.Cell(currentRow, 1).Value = user.Id;
13             worksheet.Cell(currentRow, 2).Value = user.Username;
14         }
15 
16         using (var stream = new MemoryStream())
17         {
18             workbook.SaveAs(stream);
19             var content = stream.ToArray();
20 
21             return File(
22                 content,
23                 "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
24                 "users.xlsx");
25         }
26     }
27 }

 

我們來看看代碼。 為了創建 Excel 文檔,我正在創建一個新的 XLWorkbook。 在第5行中,我創建了一個名為 Users 的新工作表,您可以看到 ClosedXML 的好處。 Excel 工作表不能使用 CSV 文件。

與前面的示例一樣,我添加了一個標題行,並將用戶列表中的值放入以下行中。 這個 API 不需要太多的介紹,因為它非常容易理解。 使用工作表對象引用行和單元格。

最后,我將工作簿導出到流中,並將其作為文件從控制器返回。

事實證明,將數據從ASP.NET Core導出到Excel非常簡單。 根據輸出文件的要求,可以選擇CSV或XLSX。 由於ClosedXML是我的首選框架,因此我很想聽聽您使用優質Excel軟件包的經驗。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM