ASP.NET Core 导入导出Excel .xlsx 文件实例

在现代Web应用程序中,经常需要处理Excel文件的导入和导出,本文将通过一个详细的实例,介绍如何在ASP.NET Core中实现这一功能,我们将使用两个流行的库:EPPlus用于生成和操作Excel文件,ClosedXML用于读取Excel文件。
准备工作
我们需要安装所需的NuGet包,在Visual Studio中,打开“工具” -> “NuGet包管理器” -> “管理解决方案的NuGet程序包”,然后搜索并安装以下包:
EPPlus
ClosedXML
Install-Package EPPlus Install-Package ClosedXML
2. 创建ASP.NET Core Web API项目
我们创建一个新的ASP.NET Core Web API项目。
1、打开Visual Studio。
2、选择“创建新项目”。
3、选择“ASP.NET Core Web API”项目模板。
4、命名项目并点击“创建”。
5、选择“.NET Core”版本(如.NET 6.0),然后点击“创建”。

添加控制器和服务
3.1 创建一个控制器
在项目中,创建一个名为ExcelController的控制器。
using Microsoft.AspNetCore.Mvc;
using System.IO;
using OfficeOpenXml; // EPPlus namespace
using ClosedXML.Excel; // ClosedXML namespace
namespace ExcelApp.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class ExcelController : ControllerBase
{
// Import action
[HttpPost("import")]
public IActionResult Import([FromForm] IFormFile file)
{
if (file == null || file.Length == 0)
return BadRequest("No file uploaded");
using (var stream = file.OpenReadStream())
{
using (var workbook = new XLWorkbook(stream))
{
var worksheet = workbook.Worksheet(1); // Get the first sheet
var rows = worksheet.RangeUsed().RowsUsed();
foreach (var row in rows)
{
var values = row.CellsUsed().Select(c => c.GetString());
// Process the row data here
}
}
}
return Ok("File imported successfully");
}
// Export action
[HttpGet("export")]
public IActionResult Export()
{
using (var package = new ExcelPackage())
{
var worksheet = package.Workbook.Worksheets.Add("Sheet1");
worksheet.Cells["A1"].Value = "Hello";
worksheet.Cells["B1"].Value = "World";
var memoryStream = new MemoryStream();
package.SaveAs(memoryStream);
memoryStream.Position = 0;
return File(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "example.xlsx");
}
}
}
}
配置启动类以支持文件上传
在Startup.cs文件中,确保配置了中间件来支持文件上传。
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
测试导入和导出功能
5.1 测试导出功能
启动应用程序并在浏览器中访问以下URL:
http://localhost:5000/api/excel/export
这应该会下载一个名为example.xlsx的文件,其中包含“Hello”和“World”两列数据。
5.2 测试导入功能
要测试导入功能,可以使用Postman或类似工具发送一个POST请求到/api/excel/import,并在请求体中包含一个表单字段file,其值为要上传的Excel文件。
本文介绍了如何在ASP.NET Core中实现Excel文件的导入和导出,我们使用了EPPlus库来生成和操作Excel文件,以及ClosedXML库来读取Excel文件,通过这两个库的结合,我们可以方便地处理Excel文件的各种需求。
常见问题解答
问题1:如何安装EPPlus和ClosedXML库?
可以通过NuGet包管理器安装这些库,在Visual Studio中,打开“工具” -> “NuGet包管理器” -> “管理解决方案的NuGet程序包”,然后搜索并安装以下包:

EPPlus
ClosedXML
或者在命令行中使用以下命令:
Install-Package EPPlus Install-Package ClosedXML
问题2:如何处理大文件导入?
对于大文件的导入,可以考虑以下几种方法:
分块读取:将文件分块读取并逐块处理,避免一次性加载整个文件到内存中。
异步处理:使用异步编程模型来提高性能,特别是在I/O密集型操作中。
流式处理:利用流式处理技术,边读边处理,减少内存占用。
各位小伙伴们,我刚刚为大家分享了有关“ASP.NET Core 导入导出Excel xlsx 文件实例”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!