4

对于当前代码:

 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

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

4

3 回答 3

13

我想在您的代码中,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);
于 2012-06-05T14:13:08.640 回答
2

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

 _app = new Excel.Application();
Excel.Workbook wb = _app.Workbooks.Open(currentPath);
于 2012-06-05T12:06:04.230 回答
1

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

于 2014-10-20T02:23:35.157 回答