Как открыть защищенный файл 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