You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求ASP.NET Core 2中无需本地磁盘的Excel上传读取类库

刚好之前我把ASP.NET MVC里的Excel读取功能迁到ASP.NET Core 2的时候,也遇到了和你一样的问题——原来的Excel Data Reader方案行不通,而且绝对不能把文件存本地(毕竟Azure部署的应用这么搞太麻烦)。给你推荐几个亲测好用的类库,完全满足你的需求:

适配ASP.NET Core 2的无本地存储Excel读取类库

1. EPPlus

这是目前.NET生态里最流行的Excel操作库之一,支持直接读取上传的IFormFile流,全程不需要将文件写入本地磁盘。

  • 注意:ASP.NET Core 2建议使用EPPlus 4.x版本(MIT许可,免费商用),更高版本的许可有所变更。
  • 极简示例代码:
public async Task<IActionResult> UploadExcel(IFormFile file)
{
    if (file == null || file.Length <= 0)
        return BadRequest("请选择有效的Excel文件");

    using (var package = new ExcelPackage(file.OpenReadStream()))
    {
        var firstWorksheet = package.Workbook.Worksheets.First();
        // 读取单元格示例:获取第一行第一列的文本
        var cellValue = firstWorksheet.Cells[1, 1].Text;
        // 后续业务逻辑...
    }
    return Ok("读取完成");
}

2. NPOI

老牌的开源Excel操作库,对.xls(旧版)和.xlsx(新版)格式都有完美支持,同样可以直接操作上传流,无本地存储需求。

  • 优势:完全开源免费,无任何许可限制,对老旧Excel文件的兼容性拉满。
  • 示例代码:
public async Task<IActionResult> UploadExcel(IFormFile file)
{
    if (file == null || file.Length <= 0)
        return BadRequest("请选择有效的Excel文件");

    using (var stream = file.OpenReadStream())
    {
        IWorkbook workbook;
        // 根据文件后缀判断使用对应的Workbook
        if (file.FileName.EndsWith(".xlsx", StringComparison.OrdinalIgnoreCase))
        {
            workbook = new XSSFWorkbook(stream);
        }
        else if (file.FileName.EndsWith(".xls", StringComparison.OrdinalIgnoreCase))
        {
            workbook = new HSSFWorkbook(stream);
        }
        else
        {
            return BadRequest("仅支持.xls和.xlsx格式的文件");
        }

        var firstSheet = workbook.GetSheetAt(0);
        // 读取单元格示例:获取第一行第一列的值
        var cellValue = firstSheet.GetRow(0)?.GetCell(0)?.StringCellValue;
        // 后续业务逻辑...
    }
    return Ok("读取完成");
}

3. ClosedXML

专注于.xlsx格式的轻量级操作库,API设计简洁直观,同样支持直接从上传流读取数据,不需要本地存储。

  • 特点:API上手快,代码可读性高,适合只需要处理新版Excel文件的场景。
  • 示例代码:
public async Task<IActionResult> UploadExcel(IFormFile file)
{
    if (file == null || file.Length <= 0)
        return BadRequest("请选择有效的Excel文件");

    using (var stream = file.OpenReadStream())
    using (var workbook = new XLWorkbook(stream))
    {
        var firstWorksheet = workbook.Worksheets.First();
        // 读取单元格示例:获取第一行第一列的值
        var cellValue = firstWorksheet.Cell(1, 1).Value.ToString();
        // 后续业务逻辑...
    }
    return Ok("读取完成");
}

这些类库都通过IFormFile.OpenReadStream()直接获取上传文件的流进行读取,完全符合你Azure部署应用的需求——不需要依赖本地磁盘,既高效又避免了存储权限问题。

内容的提问来源于stack exchange,提问作者Riz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:51:12