在.NET 8 Web API 中使用 multipart/form-data 处理 Excel 文件上传

        在现代 Web 应用程序中,文件上传是一项常见功能。无论是用户个人资料图片、文档还是 Excel 等数据文件,高效安全地处理这些上传都至关重要。在本文中,我们将逐步介绍如何创建一个 .NET 8 Web API 端点,该端点接受通过 上传的 Excel 文件multipart/form-data,读取其内容并以结构化格式返回数据。

先决条件

步骤如下:

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 文件的内容,使其成为需要有效处理数据导入的应用程序的强大解决方案。

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdn_aspnet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值