在C#中用密码打开Excel,并从外部closuresExcel

我正在寻找一种方法来在我的C#程序中打开Excel中的密码保护的Excel文件。

请注意,我只需要为我的用户打开它。 我不想找像Excel Interop这样的文件来修改文件。

对于没有密码的文件,我可以简单地启动以完整path文件名作为参数的进程启动。 但是这个里面有密码,所以不能这样做。

如果我使用Excel interope打开它,我可以打开它,但Excel过程将在用户closuresExcel窗口时离开那里。

var excelApp = new Excel.Application(); excelApp.Visible = true; var wb = excelApp.Workbooks.Open(@"d:\temp\test.xlsx", Password:"1234"); 

由于用户将在Excel窗口中修改文件,然后closures窗口。 这部分是我无法控制的。 我只是想启动文件,然后我不必关心它。 但是通过使用Excel interope,COM实际上是参照我的c#程序,所以整个Excel过程不能完全处理。

我想我知道一个解决方法。

创build一个名为OpenExcelWorkbookWithPassword.exe的助手C#控制台应用程序,它看起来像这样:

 static void Main(string[] args) { var excelapp = new Excel.Application(); excelapp.Visible = true; Excel.Workbook workbook = excelapp.Workbooks.Open(args[0], Password: args[1]); } 

并使用以下代码在主应用程序中使用它:

 string path = @"d:\temp\test.xlsx"; string pw = "1234"; System.Diagnostics.Process.Start("OpenExcelWorkbookWithPassword.exe", path + " " + pw); 

当用户closuresExcel时,即使您的主应用程序仍在运行, Excel.exe进程也将被终止。