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

Azure Blob Storage:移除Excel工作簿密码的C#实现问题咨询

解决方案

你触发报错的核心原因是:打开受密码保护的Excel文件时,ExcelPackage构造函数没有传入原始密码参数。以下是可直接运行的移除密码实现代码:

依赖包

  • Azure.Storage.Blobs:Azure Blob Storage官方SDK
  • EPPlus:Excel操作库,建议使用4.5.3.3及以上稳定版本

实现代码

// 初始化Blob客户端
BlobServiceClient blobServiceClient = new BlobServiceClient(appsetting);
BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);
BlobClient blobClient = containerClient.GetBlobClient(fileName);

// 若使用EPPlus 5.x及以上版本,需要先配置许可证(非商业用途设置为NonCommercial即可)
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

// 移除密码逻辑
using (var blobStream = await blobClient.OpenReadAsync(new BlobOpenReadOptions(true)))
// 传入原始加密密码,即可正常打开受保护的Excel文件
using (ExcelPackage package = new ExcelPackage(blobStream, originalPassword))
{
    // 不传入密码导出字节流,即为无密码的Excel文件
    byte[] unprotectedExcelBytes = package.GetAsByteArray();
    using var uploadStream = new MemoryStream(unprotectedExcelBytes);
    uploadStream.Position = 0;
    
    // 直接覆盖上传原Blob,无需提前删除旧文件
    await blobClient.UploadAsync(uploadStream, overwrite: true);
}

注意事项

  • 必须传入加密时使用的原始密码初始化ExcelPackage,否则会触发文件格式错误、权限不足等异常
  • 上传时指定overwrite: true参数可以直接覆盖原加密文件,简化操作流程
  • 处理大体积Excel文件时,建议先将Blob内容下载到本地临时文件处理,避免内存占用过高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:27:06