【问题标题】:How to open a protected Excel File with ClosedXML?如何使用 ClosedXML 打开受保护的 Excel 文件?
【发布时间】:2019-07-19 08:27:02
【问题描述】:

是否可以使用 ClosedXML 打开受密码保护的 Excel 文件?如果有,怎么做?

我尝试使用 Interop,但速度很慢。

Using Interop.Excel
Microsoft.Office.Interop.Excel.Application wb = xlApp.Workbooks.Open(Filename: "c:\TEST\MyFileProtected.xlsx", ReadOnly: true, Password: "PASSWORD");

我也尝试过使用 ClosedXML,但没有成功

string path = openFileDialog1.FileName.ToString();

var wb = new XLWorkbook(path);
wb.Unprotect("password");

我收到了错误

“文件包含损坏的数据”创建 XLWorkbook 对象。

【问题讨论】:

  • 你检查过Unprotect()方法吗?
  • @Progman 我得到“文件包含损坏的数据”我试过这个代码:string path = openFileDialog1.FileName.ToString(); var wb = new XLWorkbook(路径); wb.Unprotect("密码");它接缝是不可能的...... :( 在 10 秒或更长时间内加载具有 4 列和 1000 行的 Excel 文件时卡住了......
  • 您是如何创建工作簿的?您可以使用 Excel 打开它而不会收到有关损坏内容的任何错误吗?
  • 是的,我可以用 Excel 打开它而不会出现任何错误。 Erverything 文件没问题。该文件是在 Excel 2016 中创建的。如果我回到 VBA,我正在尝试使用 c# 进行开发。 Microsoft.Interop.Excel 不是一个选项...太慢了。

标签: c# excel protected closedxml xlsm


【解决方案1】:

ClosedXML/OpenXML 不支持启用/禁用打开文件的密码保护。见https://blogs.msdn.microsoft.com/openspecification/2009/07/17/overview-of-protected-office-open-xml-documents/

您只能锁定 OpenXML 文档的结构和窗口,而这确实是 wb.Protect() 方法所做的。

也就是说,ClosedXML 仅支持旧的保护方法。尚不支持 Excel 2013 中引入的较新的保护方法和密码哈希算法。参考https://github.com/ClosedXML/ClosedXML/issues/866

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 2021-01-17
    • 2021-08-04
    • 2016-04-17
    • 2021-01-20
    • 2021-03-28
    • 1970-01-01
    相关资源
    最近更新 更多