Как открыть защищенный файл Excel с ClosedXML?

Можно ли использовать 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.

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

Другие вопросы по тегам