在现代 Web 应用程序中,文件上传是一项常见功能。无论是用户个人资料图片、文档还是 Excel 等数据文件,高效安全地处理这些上传都至关重要。在本文中,我们将逐步介绍如何创建一个 .NET 8 Web API 端点,该端点接受通过 上传的 Excel 文件multipart/form-data
,读取其内容并以结构化格式返回数据。
先决条件
- 您的计算机上安装了 .NET 8 SDK
- Visual Studio 2022
- NuGet 包:
ClosedXML
用于读取 Excel 文件(.xlsx)
步骤如下:
1.创建一个excel文件,示例数据如下:
.xlsx 格式的 Excel
2. 设置项目
创建一个新的 .NET 8 Web API 项目,然后创建ExcelController.cs并添加以下代码:
using ClosedXML.Excel;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("[controller]")]
public class ExcelController : ControllerBase
{
private ILogger<ExcelController> _ilogger;
public ExcelController(ILogger<ExcelController> logger)
{
_ilogger = logger;
}
[HttpPost("ReadExcelFrom_FormData")]
public async Task<IActionResult> ReadExcelFrom_FormData(IFormFile file, CancellationToken cancellationToken)
{
if (file == null || file.Length == 0)
{
return BadRequest("File is empty.");
}
var data = new List<Dictionary<string, string>>();
using (var stream = new MemoryStream())
{
await file.CopyToAsync(stream, cancellationToken);
stream.Position = 0; // Reset the stream position to the beginning
using (var workbook = new XLWorkbook(stream))
{
var worksheet = workbook.Worksheets.First();
var rows = worksheet.RangeUsed().RowsUsed();
var headerRow = rows.First(); // Assumes the first row is the header row
var headers = headerRow.Cells().Select(c => c.Value.ToString()).ToList();
foreach (var row in rows.Skip(1))
{
var rowData = new Dictionary<string, string>();
foreach (var cell in row.Cells())
{
var header = headers[cell.Address.ColumnNumber - 1];
rowData[header] = cell.Value.ToString();
}
data.Add(rowData);
}
}
}
return Ok(data);
}
}
端点定义
该ReadExcelFrom_FormData方法定义为 HTTP POST 端点。它旨在接受通过表单 ( multipart/form-data) 上传的 Excel 文件。
3. 测试端点
要测试此端点,您可以使用 Postman 或类似工具发送带有标头multipart/form-data内容类型的 POST 请求。
1、方法:POST
2、网址:https://localhost:7196/Excel/ReadExcelFrom_FormData
3、标题:Content-Type设置为multipart/form-data
4.正文:选择form-data
,添加一个类型为 的键File
,命名file
,然后上传您的 Excel 文件
5.结果:API将读取excel文件(form-data)中的数据,并显示excel内容,如下:
结论
通过遵循这些步骤,您已经创建了一个强大的 .NET 8 Web API 端点,能够通过 处理 Excel 文件上传multipart/form-data。此方法利用ClosedXML库读取和处理上传的 Excel 文件的内容,使其成为需要有效处理数据导入的应用程序的强大解决方案。
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。