在C#中使用密码打开EXCEL(.xlsx)

时间:2016-02-26 08:39:12

标签: c# excel

我尝试打开受密码保护的.xlsx文件(Excel 2007格式),而无需手动输入密码。我已经安装了Excel 2003以及在打开时转换文件的Microsoft Office Compatibility Pack

以下代码有效,但会提示输入密码。

Microsoft.Office.Interop.Excel.Application ExcelApp;
Microsoft.Office.Interop.Excel.Workbook ExcelWorkbook;
ExcelApp = new Microsoft.Office.Interop.Excel.Application();           
Object pwd = "xxx";
Object MissingValue = System.Reflection.Missing.Value;
ExcelWorkbook = ExcelApp.Workbooks.Open("C:\\temp\\test.xlsx",MissingValue, MissingValue, MissingValue,pwd);

如果我使用相同的代码打开.xls文件(Excel 2003),则无需提示输入密码即可使用。打开没有密码保护的.xlsx文件也可以正常工作。

如何在不提示使用Excel 2003和Microsoft Office兼容包的密码的情况下打开受密码保护的.xlsx文件?

a similar problem将readonly参数(3rd)更改为true

的技巧
ExcelWorkbook = ExcelApp.Workbooks.Open("C:\\temp\\test.xlsx",MissingValue, true, MissingValue,pwd);

在这里不起作用。

2 个答案:

答案 0 :(得分:7)

这可能会迟到,但对于任何未来使用Interop的人来说,对我而言,它的工作原理如下:

打开以写

var WFile = new Excel.Application();
Excel.Workbook Wbook = WFile.Workbooks.Open("myFilepath", ReadOnly: false, Password: "mypassword");

以只读方式打开

var WFile = new Excel.Application();
Excel.Workbook Wbook = WFile.Workbooks.Open("myFilepath", ReadOnly: true, Password: "mypassword");

答案 1 :(得分:0)

@ J1mm1995的答案在尝试以只读方式打开文件时起作用,而当您要打开excel文件进​​行修改时(ReadOnly设置为false),则无法打开某些excel文件。

我知道这是因为Workbooks.Open()方法还希望您指定WritePassword。以下代码对我有用:

var WFile = new Excel.Application();
Excel.Workbook Wbook = WFile.Workbooks.Open(path,  ReadOnly: false, Password: "mypassword", WriteResPassword: "mypassword");