我已经在互联网和此站点上查看了如何检查文件是否具有密码。问题是如何防止Excel提示您输入正确的密码。我看到有HasPassword,但是在我看来,该属性仅在打开工作表后才可用。
try {
oWrkBk = oApp.Workbooks.Open(sFile, Password: "");
}
catch { /* has password */
但是问题是,Excel打开了我不想要的提示窗口。如果无法打开,则将其跳过并关闭Excel窗口。
答案 0 :(得分:0)
除非没有OleDb
,否则您将可以使用它来根据是否引发异常来确定文件是否具有密码。
显示的示例代码:
//using System.Data.OleDb;
private static void OpenMyExcel()
{
string filePath = "C:\\users\\me\\Desktop\\Book1.xlsx";
OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 8.0\"");
try
{
connection.Open();
//Do stuff
}
catch(Exception e)
{
//has a password
}
}
可以将其更改为一种简单的检查方法(对不起,业余代码):
//using System.Data.OleDb;
private static bool HaveAPass(string filePath)
{
OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 8.0\"");
try
{
connection.Open();
connection.Close(); //if it reaches this point, there is no password
return false;
}
catch(Exception e)
{
//has a password
return true;
}
}