操作失败,由于库未注册,对具有IID的接口的COM组件的QueryInterface调用失败

本文关键字:失败 接口 COM QueryInterface 调用 IID 组件 于库未 注册 操作 | 更新日期: 2023-09-27 18:19:13

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using Excel = Microsoft.Office.Interop.Excel;
namespace GridComplete
{
    public partial class Form1 : Form
    {
        private static Excel.Workbook MyBook;
        private static Excel.Application MyApp;
        private static Excel.Worksheet MySheet;
        private void bRun_Click(object sender, EventArgs e)
        {
            MyApp = new Excel.Application();
            MyApp.Visible = false;
            MyBook = MyApp.Workbooks.Open(tbFile1);
            MySheet = (Excel.Worksheet)MyBook.Sheets[1];
        }
    }
}

设置MyApp。对于false可见,我得到以下未处理的异常:

类型为"System"的未处理异常。InvalidCastException'发生在GridComplete.exe

附加信息:无法强制转换类型为"Microsoft.Office.Interop.Excel"的COM对象。到接口类型"Microsoft.Office.Interop.Excel._Application"的ApplicationClass。此操作失败,因为对IID为"{000208D5-0000-0000-C000-000000000046}"的接口的COM组件的QueryInterface调用失败,原因是以下错误:库未注册。(Exception from HRESULT: 0x8002801D (type_e_libnoregigied)).

我似乎不明白发生了什么事。我试图从注册表中删除键并重新运行。但这行不通。我还完全卸载了微软办公软件,然后重新安装。我不知道还能做什么来解决这个问题。

操作失败,由于库未注册,对具有IID的接口的COM组件的QueryInterface调用失败

有可能你运行代码的计算机上没有安装指定版本的Microsoft Excel。或者是安装坏了。尝试重新安装Office

这个问题是由注册表中的版本信息不正确引起的。我曾经安装过Office 365,后来我卸载了它,安装了Office 2010。这里有两项,但只有一项有效。

首先你可以打开registry editor,请必须File -> Export -> Check Export range to All的备份。

其次,您可以通过Ctrl + F检查{000208D5-0000-0000-C000-000000000046}项,选中它并获得TypeLib的值,记住该值。到我的电脑,是1.7,我猜是为Office 2010准备的,也就是现在安装的Office。

然后进入HKEY_CLASSES_ROOT'TypeLib,并选择项目{00020813-0000-0000-C000-000000000046}和扩展,我有两个子项,一个是1.7,另一个是空1.9。在我删除1.9之后,程序工作了。

相关中文资料