Использование ClosedXML (v0.93.1) в .Net Core 2.0, попытка сохранить рабочую книгу, чтобы при открытии она предлагала пользователю открыть «Только для чтения» или ввести защищенный пароль. (См. Связанный вопрос ниже).
Я видел IXLWorksheet.Protect()
и XLWorkbook.Protect()
- они правильно защищают рабочую книгу, но по умолчанию пользователь открывает с правами доступа R / W. Это проблема, потому что при записи блокируется файл, и мой процесс не может перезаписать его, пока пользователь не закроет Excel.
Этот вопрос указывает, что OpenXML (базовый API для ClosedXML) может установить это при сохранении рабочей книги, однако ClosedXML XLWorkbook.SaveAs(SaveOptions)
не включает это. Возможно, я не могу найти документацию closedxml по этому варианту, но я считаю, что этот вариант мне нужен.
Согласно этому ответу и прикрепленным ссылкам github / MSDN OpenXML не поддерживает защиту паролем, но я не вижу никакой информации об открытии только для чтения, кроме первого связанного вопроса о том, что это возможно.
Пример кода:
XLWorkbook wb = new XLWorkbook();
var ws = wb.AddWorksheet("My Sheet");
// ... add to worksheet
ws.Protect("my-worksheet-password");
wb.SaveAs("C:\\my-workbook.xlsx", new SaveOptions { /* In OpenXML the option would exist during this save step. */ });