Я пытаюсь манипулировать файлом Excel с помощью C # с помощью Microsoft.Office.Interop.Excel.
Книга, которой я пытаюсь манипулировать, имеет общую защиту пользователей.
У меня есть пароль файла и пароль ячеек, к которым я хочу получить доступ и отредактировать.
Если я пытаюсь сделать это из Excel, я делаю следующее:
- открыть файл, ввести пароль
- перейдите в ячейку, дважды щелкните ячейку для редактирования.
- Появляется диалоговое окно с просьбой предоставить пароль, я ввожу пароль и затем могу редактировать.
Я хочу сделать это из приложения на C #.
Мой текущий код выглядит следующим образом:
xl.Application excelApp = new xl.Application();
excelApp.Visible = true;
xl.Workbook newworkbook =
excelApp.Workbooks.Open(@"C:\1.xls", 0, false, 5, "password", "", false,
xl.XlPlatform.xlWindows, "", true, false, 0, true,
false, false);
xl.Sheets excelSheets = newworkbook.Worksheets;
xl.Worksheet excelWorksheet = (xl.Worksheet)excelSheets.get_Item("Sign On_Off");
excelWorksheet.Select(true);
xl.Range myrange = excelWorksheet.get_Range("b16", "b16");
myrange.Value2 = "testing";
Последняя строка выдает мне это сообщение об ошибке:
Ячейка или диаграмма, которую вы пытаетесь изменить, защищены и поэтому доступны только для чтения.
Я не могу снять защиту всего листа, поскольку это означает, что файл будет открыт исключительно для меня, а другие пользователи не смогут сохранить изменения.
Итак, мой вопрос: есть ли способ снять защиту только с клетки?
Я представляю что-то вроде:
myrange.unprotect("pw");