Если 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;
}
}