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

如何在Blob Trigger Azure Function中使用EPPlus读取Blob存储的Excel文件

Blob Trigger Azure Function 结合EPPlus处理Excel文件实现方案

1. 获取Blob文件路径

你不需要额外重新解析存储连接字符串构造Blob引用,触发绑定已经注入了完整的CloudBlockBlob实例myBlob,直接获取对应路径属性即可:

  • 容器内的相对路径(含虚拟目录前缀):直接使用已经传入的name参数
  • Blob的完整访问URI:调用myBlob.Uri.AbsoluteUri
    如果确实需要手动构造BlobReference,参考代码:
CloudBlobClient blobClient = IMAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("myblobcontainer");
CloudBlockBlob blobReference = container.GetBlockBlobReference(name);

2. 读取Blob转换为EPPlus Excel对象

直接调用CloudBlockBlob的OpenReadAsync方法获取文件流,传入EPPlus的ExcelPackage即可完成转换,注意EPPlus 5及以上版本商用需要申请许可,非商用场景可声明非商业使用,完整实现代码如下:

// 触发方法调整为异步适配异步读取逻辑
public async void Run([BlobTrigger("myblobcontainer/{name}", Connection = "AzureStorage")]CloudBlockBlob myBlob, string name, ILogger log)
{
 try
 {
  await ProcessData(myBlob,name);
 }
 catch (Exception ex)
 {
  log.LogError(ex, "处理文件失败,文件名:{name}", name);
 }
}

public async Task<int> ProcessData(CloudBlockBlob myBlob, string name)
{
    // 过滤非Excel文件
    if(!name.EndsWith(".xlsx", StringComparison.OrdinalIgnoreCase))
    {
        return 0;
    }
    // EPPlus 5+版本需指定许可上下文,商用请设置为Commercial并申请授权
    ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

    // 直接从注入的myBlob对象打开流读取Excel
    using(var blobStream = await myBlob.OpenReadAsync())
    using(var excelPackage = new ExcelPackage(blobStream))
    {
        // 此处已拿到可操作的Excel对象,可按需处理工作表、单元格等
        var workSheet = excelPackage.Workbook.Worksheets.FirstOrDefault();
        if(workSheet != null)
        {
            // 示例:读取第一行第一列单元格内容
            var firstCellValue = workSheet.Cells[1,1].Text;
            // 后续业务逻辑
        }
    }
    return 1;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:06:04