Excel工作簿输入上的奇怪错误

时间:2012-06-05 12:02:18

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

对于当前代码:

 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

我想要的只是一个预定义的工作簿,可以将工作表添加到

3 个答案:

答案 0 :(得分:12)

我想在你的代码中,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);

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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