2016-02-26 23 views
1

我尝试在不手动输入密码的情况下打开受密码保护的.xlsx文件(Excel 2007格式)。我已经安装了Excel 2003和Microsoft Office Compatibility Pack,可以在打开文件时转换文件。使用C#中的密码打开EXCEL(.xlsx)

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

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改变只读参数(3)为真

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

诀窍并不在这里工作。

+0

可能重复[在C++或C#中打开密码保护的Excel文件提示输入密码,即使我已经通过一个参数的密码](http://stackoverflow.com/questions/29204623/opening-password-protected-excel-file-in-c-or-c-sharp-prompts-for-password-eve) –

+0

不,它的有点不同,而将readonly参数设置为true的solvotion在这里不起作用。这里的问题是使用Microsoft Office兼容包。 – tonirush

+1

该问题/答案意味着在打开'Open'的调用中指定了更多的“MissingValue”参数。您是否尝试添加与该问题/答案中相同的号码? – ChrisF

回答

3

这可能会迟到,但对于互操作的任何未来的人,对我来说它的工作是这样的:

要打开写

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"); 
相关问题