一尘不染

无法将类型为“ microsoft.Office.Interop.Excel.ApplicationClass”的COM对象转换为“ microsoft.Office.Interop.Excel.Application”

c#

这是我第一次尝试从一个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();

    }

}
}

阅读 2690

收藏
2020-05-19

共1个答案

一尘不染

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

脚步:

开始->运行->注册表编辑-> 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,则是由于注册表项遗失引起的。

让我知道这个解决方案对您没有帮助

2020-05-19