我正在使用Excel.interop创建工作表的这个项目,目前他们是密码protected.Whats最好的方式来修改密码使用C#?我是互操作新手,所以不熟悉所有可用的功能。使用c#更改excel密码?
当前我使用worksheet.unprotect(oldpassword)来使用旧密码解锁工作表,然后使用新密码调用worksheet.protect(newpassword)将其锁定。但是随后出现此问题。它第一次正常工作,但之后当它试图使用oldpw解除保护时,我得到异常。所以旧的pw是1次使用,我如何在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块,然后调用不同的方法来取消保护工作表使用新密码。但那会是代码复制。任何专长?
为什么不直接在创建表(或多个)相同的操作更改密码?在那之后,您可以依靠使用新密码。 –
我不知道该怎么做。你可以请示例代码或其他东西。 –
你说你的应用程序创建了工作表:它是你的代码,所以你可能已经知道你是如何创建这些工作表的? –