Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中使用密码打开EXCEL(.xlsx)#_C#_Excel_Vsto - Fatal编程技术网

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

C# 在C中使用密码打开EXCEL(.xlsx)#,c#,excel,vsto,C#,Excel,Vsto,我尝试打开受密码保护的.xlsx文件(Excel 2007格式),而无需手动键入密码。我已安装Excel 2003和在打开时转换文件的 下面的代码可以工作,但它会提示输入密码 Microsoft.Office.Interop.Excel.Application ExcelApp; Microsoft.Office.Interop.Excel.Workbook ExcelWorkbook; ExcelApp = new Microsoft.Office.Interop.Excel.Applicat

我尝试打开受密码保护的
.xlsx
文件(Excel 2007格式),而无需手动键入密码。我已安装Excel 2003和在打开时转换文件的

下面的代码可以工作,但它会提示输入密码

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 Compatibility Pack,如何在不提示输入密码的情况下打开受密码保护的
.xlsx
文件

将readonly参数(第3个)更改为true的技巧


在这里不起作用。

这可能已经晚了,但对于任何未来的具有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");

当试图以只读方式打开文件时,@J1mm1995的回答有效,而当您想要打开excel文件进行修改时,无法打开某些excel文件(readonly设置为false)

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

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


No可能是重复的,它有点不同,因此将readonly参数设置为true的解决方案在这里不起作用。这里的问题是使用Microsoft Office Compatibility Pack。该问题/答案意味着在调用
Open
时指定了更多的“MissingValue”参数。您是否尝试添加与该问题/答案中相同的编号?为什么尝试通过互操作打开该文件?是否确实要打开Excel应用程序?如果您只想从文件中读取数据,请使用像EPPlus这样的库直接从文件中读取数据。您可以使用ooxmlsdk,但EPPlus使读取/写入Excel工作表变得更加容易。您可能希望尝试的另一种选择是,您可以找到如何读取受保护的XLSX文件。
var WFile = new Excel.Application();
Excel.Workbook Wbook = WFile.Workbooks.Open(path,  ReadOnly: false, Password: "mypassword", WriteResPassword: "mypassword");