Как пропустить несколько защищенных паролем файлов Excel при обработке большого количества книг Excel в C # - PullRequest
2 голосов
/ 02 июня 2011

Можно ли пропустить защищенные паролем файлы Excel в c #?

Я не знаю паролей к этим файлам, и, поскольку все эти файлы должны обрабатываться автоматически, программа должна иметь возможность пропустить все файлы, запрашивающие пароль, так как запрос на ввод пароля пользователя прервать программу.

Это мой код для открытия файла Excel:

Excel.Workbook workbook = app.Workbooks.Open(fullFileName, ReadOnly: false, Password: "");

1 Ответ

0 голосов
/ 02 июня 2011

вы можете использовать EPPlus , с ним это относительно легко, единственная проблема состоит в том, чтобы узнать, вызвано ли исключение, потому что защита или что-то еще, вот код:

public bool IsXlsxPasswordProtected(string fileName)
{
  bool encrypted = false;
  FileStream fs = new FileStream(fileName, FileMode.Open);
  ExcelPackage pack = new ExcelPackage();
  try
  {
    pack.Load(fs);
  }
  catch (Exception ex)
  {
    /// maybe there is better way to know if exception is because file is protected 
    /// with password, idealy EPP should raise dedicated exception type 
    /// e.g. PasswordProtectedException
    if (ex.InnerException != null && ex.InnerException is FileFormatException)
      encrypted = true;
    else
      throw;
  }
  return encrypted;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...