检查Excel是否具有密码并阻止提示C#

时间:2019-04-12 15:50:21

标签: c# excel

我已经在互联网和此站点上查看了如何检查文件是否具有密码。问题是如何防止Excel提示您输入正确的密码。我看到有HasPassword,但是在我看来,该属性仅在打开工作表后才可用。

try {
oWrkBk = oApp.Workbooks.Open(sFile, Password: "");
}
catch { /* has password */

但是问题是,Excel打开了我不想要的提示窗口。如果无法打开,则将其跳过并关闭Excel窗口。

1 个答案:

答案 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;
    }
}