Я работаю над этим проектом, который использует Excel.interop для создания рабочих листов, и в настоящее время они защищены паролем. Каков наилучший способ изменить пароль с помощью c #? Я новичок в взаимодействии, поэтому не знаком со всеми доступными функциями.
В настоящее время я использую worksheet.unprotect (oldpassword), чтобы разблокировать лист, используя старый пароль, а затем вызываю worksheet.protect (newpassword), чтобы заблокировать его, используя новый пароль. Но тогда возникает эта проблема. Он работает нормально в первый раз, но после этого, когда он пытается снять защиту с помощью oldpw, я получаю исключение. Итак, старый pw используется один раз, как мне реализовать эту логику в c #? Кроме того, у меня есть около 15 рабочих листов (все защищены паролем), и это усложняет использование счетчиков.
В настоящее время я использую блок try catch, как этот.
public static void Unprotect_Worksheet(string Name)
{
try
{
//try old pw first, if gets exception, retry using new pw
string strPassword = oldpassword;
Excel.Worksheet wsheet = (Excel.Worksheet)Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[Name];
wsheet.Unprotect(oldpassword);
}
catch
{
string strPassword = newpassword;
Excel.Worksheet wsheet = (Excel.Worksheet)Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[Name];
wsheet.Unprotect(strPassword);
}
}
Это прекрасно работает, но я не думаю, что для реализации бизнес-логики следует использовать блок catch. Есть ли лучший способ решить эту проблему?
Может быть, я могу вернуть 0 в вызывающий метод изнутри блока catch, а затем вызвать другой метод, чтобы снять защиту с нового пароля. Но это будет репликация кода. Любая экспертиза ???