创建 Excel 应用程序时出现 COM 异常 80040154

Posted

技术标签:

【中文标题】创建 Excel 应用程序时出现 COM 异常 80040154【英文标题】:COM Exception 80040154 When creating an Excel Application 【发布时间】:2012-12-01 15:40:02 【问题描述】:

我正在尝试在没有也不会安装 Office 的服务器上运行我的应用程序。

using EXCEL = Microsoft.Office.Interop.Excel;
...
EXCEL.Application app = new EXCEL.Application();//Exception thrown here

代码在我自己的系统上运行良好,但在服务器上却出现以下异常:

Unhandled Exception: System.Runtime.InteropServices.COMException: 
Retrieving the COM class factory for component with CLSID ... failed
due to the following error: 80040154 Class not registered
(Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

两个系统都是 32 位的,我复制了应用程序 exe 旁边的 excel Interop dll。我还安装了O2010PIA。

有什么线索吗?

【问题讨论】:

【参考方案1】:

Office 互操作程序集是运行时可调用的包装器 (RCW),允许您通过其公开的 COM API 与安装在系统上的 Office 副本进行互操作。

错误消息表明没有安装 Excel,这正是我所期望的。不能在没有 Office 的计算机上使用 Interop 程序集。

【讨论】:

【参考方案2】:

我正在尝试在服务器上运行我的应用程序,但该服务器不会也将 没有安装 Office。

正如 Joe 所说,您需要安装 Excel 才能使 Interop 工作。如果您对此不以为然,请考虑third-party alternatives。一般来说,Microsoft does not recommend installing Office on your server and using it with Interop - 话虽如此,它会起作用(至少在大多数情况下)。

【讨论】:

第二个链接(微软建议不要安装 Office)坏了。

以上是关于创建 Excel 应用程序时出现 COM 异常 80040154的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# 和 XAML 为 Windows 8.1 创建 facebook 应用程序时出现异常

在 iOS 8 Today Extension 中获取 parse.com 用户数据时出现异常

使用 Apache Poi 生成批量 excel 文件时出现套接字异常

仅在运行单元测试时出现 OLE DB 异常“类未注册”

COM 异常:尝试创建 ADOX.Catalog 时出现“类未注册”

使用 EPPlus 库从 SQL Server 导出到 Excel 时出现“内存不足”异常