【问题标题】:Strange error on Excel Workbook inputExcel工作簿输入的奇怪错误
【发布时间】:2012-06-05 12:02:17
【问题描述】:

对于当前代码:

 String currentPath = Directory.GetCurrentDirectory();

        OpenFileDialog op = new OpenFileDialog();
        op.InitialDirectory = currentPath;
        if (op.ShowDialog() == DialogResult.OK)
            currentPath = op.FileName;
        else
        {
            toolStripStatusLabel1.Text = "Failed to Load Workbook";
            toolStripStatusLabel1.Visible = true;
        }

        Workbook wb = new Workbook(excel.Workbooks.Open(currentPath));

我收到错误:

System.Runtime.InteropServices.COMException 未处理 消息=检索具有 CLSID {00020819-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败,原因是以下错误:80040154 未注册类(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))。 源=mscorlib 错误码=-2147221164

我只想要一个预定义的工作簿来添加工作表

【问题讨论】:

    标签: c# visual-studio-2010 excel excel-interop


    【解决方案1】:

    我想在您的代码中,Workbook 的全名是 Microsoft.Office.Interop.Excel.Workbook,而该 excel 是 Microsoft.Office.Interop.Excel.Application 的一个实例。

    如果是这种情况,您的代码将无法工作,因为 Workbook 是一个接口,而接口没有构造函数。您必须要求 excel 应用程序为您创建工作簿,在您的情况下,您只需编写:

    Workbook wb = excel.Workbooks.Open(currentPath); 
    

    以类似的方式,如果你想创建一个新的空工作簿,你应该写:

    Workbook wb = excel.Workbooks.Add(System.Reflection.Missing.Value);
    

    【讨论】:

    • 令人惊讶的是这对我有用!我花了几个小时在这上面,每个人都试图说这是由于 64 位/32 位构建模式造成的,而我已经按照所有应该的方式设置了我的设置,但仍然存在问题,但这有效。谢谢!
    【解决方案2】:

    我不知道你的错误,但我做过类似的事情:

     _app = new Excel.Application();
    Excel.Workbook wb = _app.Workbooks.Open(currentPath);
    

    【讨论】:

      【解决方案3】:

      右键单击您的解决方案并将平台更改为 x86 重建您的解决方案... 祝你好运!

      【讨论】:

        最近更新 更多