c# - Excel 工作簿输入的奇怪错误

标签 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

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

最佳答案

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

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

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

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

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

关于c# - Excel 工作簿输入的奇怪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10896947/

相关文章:

c# - 如何在 T4 模板中使用 resx 资源文件

c++ - 微软运行时库

c# - 使用来自 c# reportviewer 的文件流创建新的 excel 工作表

java - 使用 Apache POI 在 Java 中读取和写入 xls 和 xlsx excel 文件

vba - 删除除具有某些标题的列之外的所有列

c# - c# - 如何在任何有异常的情况下向线程发出停止信号

c# - Clr 命名空间映射到默认 xaml 命名空间

visual-studio-2010 - 停止 Visual Studio 2010 在设计模式下打开 XSD

VS2010中的Python

c# - .NET Core IServiceScopeFactory.CreateScope() 与 IServiceProvider.CreateScope() 扩展