asp.net html导excle,使用ASP.NET Core将数据导出到Excel

这篇博客介绍了如何在ASP.NET Core中将数据导出为Excel文件,提供了两种方法:简单易用的CSV格式和功能更强大的XLSX格式。CSV适用于基本表格数据,而XLSX可以包含颜色和公式。文章通过示例展示了如何手动创建CSV文件以及如何使用ClosedXML库生成XLSX文件,强调了ClosedXML的易用性和丰富功能。
摘要由CSDN通过智能技术生成

当需要从 ASP.NET Core 导出数据到 Excel 时,有几个不同的选项。 如果您需要简单的表格数据,那么生成一个 CSV 文件就足够了。 如果您需要嵌入颜色和公式,您将需要更高级的东西。 让我们从简单的开始。

对于本文中的示例,我将使用带有一些硬编码数据的ASP.NET Core控制器。 在实际的应用程序中,这些数据将来自用户输入,数据库或类似的数据:

1 public classHomeController : Controller2 {3 private List users = new List

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 publicHomeController()12 {13 }14 }

导出为CSV

导出数据的最简单方法是作为逗号分隔值(CSV)文件。 有可用的NuGet软件包可以帮助您解决此问题,但对于本文,我将手动创建CSV:

1 publicIActionResult Csv()2 {3 var builder = newStringBuilder();4 builder.AppendLine("Id,Username");5 foreach (var user inusers)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 publicIActionResult Excel()2 {3 using (var workbook = newXLWorkbook())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 inusers)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 = newMemoryStream())17 {18 workbook.SaveAs(stream);19 var content =stream.ToArray();20

21 returnFile(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软件包的经验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值