• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

使用ASP.NETCore将数据导出到Excel

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

 

当需要从 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软件包的经验。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.NETWebAPI跨域访问(CORS)发布时间:2022-07-10
下一篇:
ASP.NET文本框中添加日期选择控件发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap