Azure Blob 存储:从 Excel 工作簿中删除密码

Posted

技术标签:

【中文标题】Azure Blob 存储:从 Excel 工作簿中删除密码【英文标题】:Azure Blob Storage: Remove password from excel workbook 【发布时间】:2021-11-20 00:01:23 【问题描述】:

我在 Azure Blob 存储中保存了一个受密码保护的 Excel 工作簿,我想删除密码并将文件上传回 Blob。我编写了密码来保护 blob 中的 excel 文件的代码,但我是 C# 新手,将受密码保护的文件作为流打开会产生错误。

有没有人成功地从保存在 Azure Blob 存储中的 Excel 文件中删除密码?

//Open Excel on blob
            BlobServiceClient blobServiceClient = new BlobServiceClient(appsetting);
            BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);
            BlobClient blobClient = containerClient.GetBlobClient(fileName);

            //Password protect file
            using (var stream = await blobClient.OpenReadAsync(new BlobOpenReadOptions(true)))
            using (ExcelPackage package = new ExcelPackage(stream))
            
                //Save password protected file
                package.Save(password);
                MemoryStream ms = new MemoryStream(package.GetAsByteArray());
                ms.Position = 0;

                //Delete the unprotected excel file
                blobClient.DeleteIfExists();

                //Upload password protected excel file
                BlobClient outputBlob = containerClient.GetBlobClient(fileName);
                outputBlob.Upload(ms);
            

【问题讨论】:

在本地下载文件然后使用标准 Excel 方法删除密码可能更容易。您的标签中有 EPPlus - 您在使用它吗?下面是使用 EPPlus ***.com/questions/44978634/… 打开密码保护文件的示例 谢谢尼克,我昨天解决了这个问题并使用了这种方法。是的,使用 EPPlus。在 Azure 上,我能够在临时文件夹中创建文件并将 blob 下载到我在临时文件夹中创建的文件中。 【参考方案1】:

通过保存到 Azure 上的临时文件夹然后打开文件来解决。

//Create temp path
string tempPath = Path.GetTempPath();
tempFullPath = tempPath + fileName;

 //Download blob
 blobClient.DownloadTo(tempFullPath);

【讨论】:

感谢您返回解决方案 - 您应该能够接受这个作为答案

以上是关于Azure Blob 存储:从 Excel 工作簿中删除密码的主要内容,如果未能解决你的问题,请参考以下文章

源数据集中的动态工作表名称:Azure 数据工厂上的(Excel(Blob 存储))。 - 错误:请为您的数据集选择一个工作表

使用 epplus 从 blob 触发 azure 函数访问 excel 文件

从 Azure Excel blob 文件将数据导入 SQL Server

Azure 逻辑应用可以从存储帐户中读取 excel 文件吗?

使用 openxml 将行追加到 azure blob 存储中的 excel

使用 azure 逻辑应用将 blob 从 azure 存储帐户动态发送到电子邮件