无法将“microsoft.Office.Interop.Excel.ApplicationClass"类型的 COM 对象转换为“microsoft.Office.Interop.Excel.Application" [英] unable to cast COM object of type 'microsoft.Office.Interop.Excel.ApplicationClass' to 'microsoft.Office.Interop.Excel.Application'"

查看:98
本文介绍了无法将“microsoft.Office.Interop.Excel.ApplicationClass"类型的 COM 对象转换为“microsoft.Office.Interop.Excel.Application"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

This is my first attempt to capture some data from excel from within one C# console application.

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

I get the error "unable to cast COM object of type 'microsoft.Office.Interop.Excel.ApplicationClass' to 'microsoft.Office.Interop.Excel.Application'".

此代码使用了Microsoft Excel 12.0 对象库",我参考了 Microsoft.Office.Interop.Excel.

This code used the 'Microsoft Excel 12.0 Object Library' , and I gave reference to Microsoft.Office.Interop.Excel.

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

Still, I could not get over this error - which I believe has its own quick solution.

我在这个网站上挖掘了一点,发现了这个解决方案:无法嵌入互操作类型

I digged a little bit this site and came across with this solution: Interop type cannot be embedded

但是,我无法理解,因此无法实施建议的解决方案.

However, I could not understand so could not implement what was suggested as a solution.

我的 .Net 版本是 4.5.

My .Net version is 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();

    }

}
}

推荐答案

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

If this is not a code related error than please remove below given key from registry.

步骤:

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

Start--> Run --> regedit --> HKEY_CLASSES_ROOT-->TypeLib-->{00020813-0000-0000-C000-000000000046} --> 1.8/1.7 (Delete this)

解决办法:此问题可以通过删除从更高版本的 Office 中遗留下来的无效注册表项来解决.按照上述步骤操作.

Solution: This issue can be resolved by deleting an invalid registry key left over from the higher version of Office. Follow the above steps.

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

Cause: This issue is caused by a left over registry key if you have downgraded your version of Microsoft Office from either Office 2010 to Office 2007, or Office 2013 to Office 2010 or 2007.

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

Let me know if this solution is not helped to you

这篇关于无法将“microsoft.Office.Interop.Excel.ApplicationClass"类型的 COM 对象转换为“microsoft.Office.Interop.Excel.Application"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆