无法将'microsoft.Office.Interop.Excel.ApplicationClass'类型的COM对象强制转换为'microsoft.Office.Interop.Excel.Application'"

Ayk*_*yik 20 c# excel com-interop

这是我第一次尝试从一个C#控制台应用程序中的excel中捕获一些数据.

我收到错误"无法将类型为'microsoft.Office.Interop.Excel.ApplicationClass'的COM对象转换为'microsoft.Office.Interop.Excel.Application'".

此代码使用"Microsoft Excel 12.0对象库",我提供了对Microsoft.Office.Interop.Excel的引用.

不过,我无法克服这个错误 - 我相信它有自己的快速解决方案.

我挖了一点这个网站并遇到了这个解决方案: Interop类型无法嵌入

但是,我无法理解所以无法实现建议的解决方案.

我的.Net版本是4.5.

很感谢任何形式的帮助.

提前致谢.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;

using Excel = Microsoft.Office.Interop.Excel;

namespace deneme
{
class Program
{
    static void Main(string[] args)
    {

        Excel.Application xlApp = new Excel.Application();
        xlApp.Visible = true; // <-- excel application
        xlApp.DisplayAlerts = false;

        // Open the workbook.
        Excel.Workbook wBook = xlApp.Workbooks.Open("C:\\FNN\\XLA\\fnnComTemplate.xlsx",
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing);

        // get the sheet
        Excel.Worksheet wSheet = wBook.Sheets[0];
        // foreach (Excel.Worksheet sheet in wBook.Sheets) { if (sheet.Name == "templateSheet") { wSheet = sheet; } }

        Excel.Range rng = wSheet.get_Range("A1");

        aux = wSheet.Range["F6"].Value;

        Console.WriteLine("interop result:" + aux);
        Console.ReadLine();

    }

}
}
Run Code Online (Sandbox Code Playgroud)

Jay*_*ani 29

如果这不是代码相关的错误,请从注册表中删除以下给定的密钥.

脚步:

开始 - >运行 - > regedit - > HKEY_CLASSES_ROOT - > TypeLib - > {00020813-0000-0000-C000-000000000046} - > 1.8/1.7(删除此项)

解决方案:可以通过删除较高版本的Office遗留的无效注册表项来解决此问题.按照上述步骤操作.

原因:如果您已将Microsoft Office版本从Office 2010降级到Office 2007或Office 2013降级到Office 2010或2007,则此问题是由遗留的注册表项引起的.

如果这个解决方案对您没有帮助,请告诉我

  • 请解释一下您从OP的问题中看到的问题,删除此注册表项的原因,为什么您认为这将解决OP的问题以及您在何处找到此解决方案. (3认同)
  • 老问题,我知道但是:酷!您刚刚为我们节省了很多时间!补充一下,当您从 64 位迁移到 32 位时,也可能会发生这种情况。这是有效的,因为显然 Office 互操作性正在尝试使用最高版本和/或 64 位(如果可用)。如果该键中存在不存在的路径,则会出现此错误。所以如果office版本卸载了但是key还在的话,查找路径就失败了! (3认同)

Ale*_*lex 17

Microsoft Office 365

我在Windows 10上运行Microsoft Office 365并尝试使用上述解决方案删除注册表项但未成功.

我去控制面板试图修复Office 365套件. 在此输入图像描述

我选择了快速修复 在此输入图像描述

再次尝试我的程序,一切正常!

  • 这个解决方案对我有用。我什至没有在接受的答案中列出 reg 条目。 (4认同)
  • 快速修复对我很有帮助(但至少需要 5 分钟)。确保在“添加或删除程序”中查找“Microsoft 365 Apps”而不是“Office”,否则您将修复错误的 Office。最初我安装了office365,同时保留了旧的office。在某一时刻,Windows开始使用旧的办公室,我再次设置为使用新的办公室,但后来出现了这个错误。 (2认同)

haw*_*bsl 8

我确信这个问题的答案(以及类似的问题)建议编辑注册表并删除不再在机器上的旧版本的Office引用是正确的.

我只是添加了这个答案,因为我正在踢自己.花了两个小时在注册表中搜索密钥并且无处可去.骰子的最后一击是尝试在Microsoft Office上进行简单的修复,突然我的错误消失了.

...在我看来,在深入手动编辑注册表之前尝试修复是值得的.