如何使用Excel Interop实例化空工作簿?

时间:2017-06-13 13:09:37

标签: c# excel if-statement excel-interop

我有这段代码:

using Excel = Microsoft.Office.Interop.Excel;
var excelApp = new Excel.Application();

if (CurrentWorkbook.Version == "Release")
{
}
else
{
      if (File.GetLastWriteTime(CurrentWorkbook.DataPath + CurrentWorkbook.FileName + ".xlsm").Date != DateTime.Today)
      {
           var MRPData = excelApp.Workbooks.Open(@"H:\@Business_Reporting_Today\MRP\Blank MRP Workbook.xlsm", 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
      }
}

然后在我的项目中我有:

if (CurrentWorkbook.Version == "Release")
{
}
else
{
    excelApp.DisplayAlerts = false;

    MRPData.Close(0);
    Marshal.FinalReleaseComObject(MRPData);
    excelApp.Quit();
    Marshal.FinalReleaseComObject(excelApp);
}

然而,由于我在一个if代码块中声明了MRPData,当然,在后面的代码块中,“当前上下文中不存在”。我试图用以下方法将变量从代码块中声明出来:

var MRPData = new Excel.Workbook();

这消除了编译错误,但给出了一个运行时错误,

  

使用CLSID检索组件的COM类工厂   {00020819-0000-0000-C000-000000000046}由于以下原因而失败   错误:80040154未注册类(HRESULT异常:   0x80040154(REGDB_E_CLASSNOTREG))。'

如何修复此问题,以便我可以在if代码块之外声明它?

0 个答案:

没有答案