gpt4 book ai didi

c# - 检查 Excel 文件是否在 .NET Core 中受密码保护

转载 作者:太空宇宙 更新时间:2023-11-03 20:55:14 28 4
gpt4 key购买 nike

技术:

C#

ASP.NET 核心 2.0

Excel(主要是 OpenXml,但偶尔有遗留文档)

目前正在使用 ExcelDataReader 读取文件。

场景:

我需要在服务器上存储一些文件并在以后访问它们以进行工作。用户通过 Web API 上传文件,并以相同的方式调用请求完成工作。

一些用户用密码保护他们的 Excel 文件,要求这些文件在服务器上时保持密码保护。

问题:

我需要检测文档是否受密码保护,以便我可以使用适当的配置来访问它。

我在谷歌上搜索了很多,但它主要来自 Workbook.HasPassword(我认为这是 Excel.Interop 的一部分,我想避免添加)。我还找到了this link一个关于 Office 文档的类似问题,其中的解决方案是通过文件流针对各种 header 数据的长 list 。

理想情况下,我想要一个不需要我打开文件的核心友好解决方案。我不经常处理文档,所以我不知道下一步该去哪里。

有什么建议吗?

最佳答案

因为您已经在使用 ExcelDataReader,所以在 try-catch 子句中打开文件并处理 InvalidPasswordException:

bool ExcelFileRequiresPassword(Stream stream) {
try {
using (ExcelReaderFactory.CreateReader(stream)) { }
} catch (InvalidPasswordException) {
return true;
}
return false;
}

这在性能方面并不算太差。在幕后,它只检查文件中的相关 header ,并处理所有血淋淋的 BIFF、ZIP 和版本控制细节。如果没有密码,则不会读取任何数据。

关于c# - 检查 Excel 文件是否在 .NET Core 中受密码保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51253914/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com