C# 在c语言中处理大量excel工作簿时如何跳过几个受密码保护的excel文件#

C# 在c语言中处理大量excel工作簿时如何跳过几个受密码保护的excel文件#,c#,windows,excel,C#,Windows,Excel,是否可以跳过c#中受密码保护的Excel文件 我不知道这些文件的密码,因为所有这些文件都应该自动处理,程序需要能够跳过所有询问密码的文件,因为询问用户输入密码的提示将中断程序 这是我打开Excel文件的代码: Excel.Workbook workbook = app.Workbooks.Open(fullFileName, ReadOnly: false, Password: ""); 您可以使用它,它相对简单,唯一的问题是要知道是因为保护还是其他原因引发了异常,下面是代码: public

是否可以跳过c#中受密码保护的Excel文件

我不知道这些文件的密码,因为所有这些文件都应该自动处理,程序需要能够跳过所有询问密码的文件,因为询问用户输入密码的提示将中断程序

这是我打开Excel文件的代码:

Excel.Workbook workbook = app.Workbooks.Open(fullFileName, ReadOnly: false, Password: "");
您可以使用它,它相对简单,唯一的问题是要知道是因为保护还是其他原因引发了异常,下面是代码:

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;
}
您可以使用它,它相对简单,唯一的问题是要知道是因为保护还是其他原因引发了异常,下面是代码:

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