【问题标题】:understanding COM exception理解 COM 异常
【发布时间】:2013-05-23 05:08:12
【问题描述】:

嘿,我遇到了以下异常: 由于以下错误,检索具有 CLSID {00020819-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败:80040154。 办公室 2010。

我已经阅读了一堆结果,典型的解决方案是将调试从 AnyCPU 更改为 X86。(我不想这样做,因为它是一个大项目,但它无论如何都没有用)。我也想了解异常。

我只是试图添加一个新的工作簿工作表并用一些数据填充它,但由于上述异常,它在创建工作簿时出错。

using excel = Microsoft.Office.Interop.Excel;

public static void ExcelFunction()
    {
        excel.Workbook wb_XLS = new excel.Workbook();
        excel.Worksheet ws_XLS = new excel.Worksheet();
        ws_XLS = (excel.Worksheet)wb_XLS.ActiveSheet;
        int x, y,count;
        count = x = y = 0;
        while (x < 100)
        {
            while (y < 100)
            {
                ws_XLS.Cells[x, y] = count.ToString();
                count++;
                y++;
            }
            x++;
        }
    }

【问题讨论】:

  • 表示“类未注册”。
  • 在 HKEY_CLASSES_ROOT\CLSID 下的注册表中查找。您的机器上是否有该指南的条目?
  • 更贴近:您是否曾经在您的计算机上安装过 Office 主互操作程序集?默认情况下,它们不附带 Office。
  • 您不应该先创建 excel 应用程序,然后通过在工作簿集合上调用 Add 而不是在 excel.workbook 上调用 new 来创建新工作簿吗?
  • 尝试使用Microsoft.Office.Interop.Excel.Application app = new ... 等,然后在进入工作簿级别之前说Microsoft.Office.Interop.Excel.Workbooks books = app.Workbooks。这是@WiktorZychla 的建议

标签: c# office-interop


【解决方案1】:

您不应该先创建 excel 应用程序,然后通过在工作簿集合上调用 Add 而不是在 excel.workbook 上调用 new 来创建新工作簿吗?

 Excel.Application app = new ... ;
 var workbook = app.Workbooks.Add();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 2012-02-28
    • 2014-04-23
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多