ASP.NET Core 3.0 教程:如何导出数据到 Excel?
构建Web应用程序时,通常将需要从Word或Excel文档中导入或导出数据。 有多种方法可以实现此目的,并且有很多NuGet软件包可与Word或Excel一起使用。 本文讨论了如何在ASP.NET Core中使用ClosedXML将数据导出到Excel。
若要使用本文提供的代码示例,您应该在系统中安装Visual Studio 2019。 如果您还没有副本,则可以在此处下载Visual Studio 2019 。
在Visual Studio中创建一个ASP.NET Core MVC项目
首先,让我们在Visual Studio 2019中创建一个ASP.NET Core项目。假设系统中安装了Visual Studio 2019,请按照下面概述的步骤在Visual Studio中创建一个新的ASP.NET Core项目。
- 启动Visual Studio IDE。
- 点击“创建新项目”。
- 在“创建新项目”窗口中,从显示的模板列表中选择“ ASP.NET Core Web应用程序”。
- 点击下一步。
- 在“配置新项目”窗口中,指定新项目的名称和位置。
- (可选)选中“将解决方案和项目放在同一目录中”复选框。
- 单击创建。
- 在接下来显示的“创建新的ASP.NET Core Web应用程序”窗口中,从顶部的下拉列表中选择.NET Core作为运行时,并选择ASP.NET Core 2.2(或更高版本)。 我将使用ASP.NET Core 3.0。
- 选择“ Web应用程序(Model-View-Controller)”作为项目模板,以创建新的ASP.NET Core MVC应用程序。
- 确保未选中“启用Docker支持”和“配置HTTPS”复选框,因为我们此处将不再使用这些功能。
- 确保将身份验证设置为“无身份验证”,因为我们也不会使用身份验证。
- 单击创建。
按照这些步骤应该在Visual Studio中创建一个新的ASP.NET Core MVC项目。 我们将在以下部分中使用该项目来说明导出Excel数据的方法。
安装ClosedXML NuGet包
如果要将数据导出到Excel,有多个库可供选择。 其中之一名为ClosedXML。 您可以通过Visual Studio 2019 IDE中的NuGet软件包管理器来安装此软件包,也可以通过在NuGet软件包管理器控制台中执行以下命令来安装此软件包:
Install-Package ClosedXML
从ASP.NET Core 3.0将数据导出为CSV文件
将数据导出为逗号分隔(CSV)文件很简单。 您可以利用NuGet包(例如CsvExport或AWright18.SimpleCSVExporter)来实现此目的,也可以手动执行。 为了简单起见,我们将手动生成CSV文件。 考虑以下名为Author的类。
-
public class Author
-
{
-
public int Id { get; set; }
-
public string FirstName { get; set; }
-
public string LastName { get; set; }
-
}
接下来,您可以将数据填充到作者列表中,如下面给出的代码片段所示。
-
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"}
-
};
以下代码段显示了如何在控制器的操作方法中生成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();
-
}
-
}
在ASP.NET Core 3.0中将数据导出为XLSX文件
Excel中的工作簿由几个工作表组成。 您可以使用以下代码创建Excel工作簿。
var workbook = new XLWorkbook();
然后,您可以利用IXLWorkSheet界面来创建工作表并将其添加到工作簿中,如下所示。
-
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;
-
}
最后,您可以将工作簿另存为内存流,然后创建FileContentResult实例,如下所示。
-
using (var stream = new MemoryStream())
-
{
-
workbook.SaveAs(stream);
-
var content = stream.ToArray();
-
return File(content, contentType, fileName);
-
}
在ASP.NET Core 3.0中下载Excel文档
这是可用于下载Excel文档的action方法的完整源代码。
-
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,但还有其他几个用于在ASP.NET Core中读取,写入和操作Excel数据的程序包,包括EPPlus和NPOI。 您可以在https://github.com/ClosedXML/ClosedXML上了解有关GitHub的ClosedXML的更多信息。 我将在以后的文章中讨论在ASP.NET Core应用程序中导入Excel数据。
如何在ASP.NET和ASP.NET Core中执行更多操作:
- 如何在ASP.NET Core中使用内存中缓存
- 如何处理ASP.NET Web API中的错误
- 如何将多个参数传递给Web API控制器方法
- 如何在ASP.NET Web API中记录请求和响应元数据
- 如何在ASP.NET中使用HttpModules
- ASP.NET Core Web API中的高级版本控制
- 如何在ASP.NET Core中使用依赖项注入
- 如何在ASP.NET中使用会话
- 如何在ASP.NET中使用HTTPHandlers
- 如何在ASP.NET Core中使用IHostedService
- 如何在ASP.NET Core中使用WCF SOAP服务
- 如何提高ASP.NET Core应用程序的性能
- 如何使用RestSharp使用ASP.NET Core Web API
- 如何使用ASP.NET Core中的日志记录
- 如何在ASP.NET Core中使用MediatR
- 如何在ASP.NET Core中使用会话状态
- 如何在ASP.NET Core中使用Nancy
- 了解ASP.NET Web API中的参数绑定
- 如何在ASP.NET Core MVC中上传文件
- 如何在ASP.NET Core Web API中实现全局异常处理
- 如何在ASP.NET Core中实施运行状况检查
- ASP.NET中缓存的最佳实践
- 如何在.NET中使用Apache Kafka消息传递
- 如何在Web API上启用CORS
- 何时使用WebClient与HttpClient与HttpWebRequest
- 如何在.NET中使用Redis缓存
- 何时在.NET中使用Task.WaitAll与Task.WhenAll
From: https://www.infoworld.com/article/3538413/how-to-export-data-to-excel-in-aspnet-core-30.html