无法使用 Office.Interop 和 C# 打开受密码保护的 Excel 文档

Unable to open password protected Excel document with Office.Interop and C#

我有一个 Excel 使用 Excel.Interop 创建的工作簿。我用 workbook.SaveAs(path, XlFileFormat.xlOpenXMLWorkbook, "password", "password", false, false) 保存工作簿,然后需要关闭工作簿,因为新的 worksheet 将在稍后阶段作为某种自动化的一部分附加。

当我尝试使用 workbooks.Open(path, ReadOnly: false, Password: "password"); 再次打开工作簿时,进程挂起,没有任何反应,即没有异常,没有任何反应。

以下是我正在尝试的片段:

var excelApplication = new Microsoft.Office.Interop.Excel.Application();
var excelWorkbooks = excelApplication.Workbooks;
var workbook = new object();
//Append means that the a new sheet will be added to the existing workbook, thus the book needs to be opened first.
if (Append)
{
        Exception innerEx = null;
        try
        {
            excelWorkbooks.Open(ExcelOutputPath, ReadOnly: false, Password: "password");
        }
        catch
        {
            innerEx = new Exception("FileNotFound");
        };

}
//Lots of logic follows here
//and here
workbook.SaveAs(ExcelOutputPath, XlFileFormat.xlOpenXMLWorkbook, "password", "password", false, false);
        workbook.Close(0);
        Marshal.FinalReleaseComObject(workbook);
        workbook = null;

请问我错过了什么?

遇到同样问题的人,这是因为您在尝试打开工作簿时需要为 WriteResPassword 参数指定相同的密码。这是必需的,因为工作簿最初是用 WriteResPassword

保存的