如何在不安装Excel的情况下修复InteropServices.COMException?

时间:2018-10-04 20:12:07

标签: c# excel-interop

我有一个创建Excel电子表格的C#控制台应用程序。我向应用程序添加了Interop.Excel NuGet包。当我尝试在虚拟机上运行它时,出现异常:

由于以下错误,检索具有CLSID {00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败:80040154未注册类...

我试图将平台设置为x64或x86,而不是Any CPU,但这并没有帮助。 在VM上安装Excel是不可接受的。没有安装有什么办法解决吗?

谢谢。

2 个答案:

答案 0 :(得分:3)

对不起,COM互操作程序包不包括应用程序本身,仅包括可简化与应用程序互操作的CLR可调用函数。由于Microsoft Excel是许可产品,因此您必须单独购买/安装。

没有免费的午餐,但是可能您可以使用COM远程处理通过interop软件包从VM调用在主机上运行的Excel副本。出于相当明显的安全原因,默认情况下不会启用此功能,但是如果您将其用于自动化测试,则可能会解决这种使用问题。

答案 1 :(得分:1)

如果只需要与XLS X 文件进行交互,则可以尝试不依赖Excel的第三方库。 XLSX is an open, XML-based format(这是一堆XML的zip文件),现在已有10多年的历史了。您可以使用许多高质量的开源库来处理它们。

我强烈建议使用EPPlus(GitHubNuGetSO),它比使用互操作程序要稳定得多,功能丰富且幅值更快

如果您需要与旧版XLS文件进行交互,那么您就不走运了。这是一种旧的专有格式,MS始终贴近他们的内心。有第三方库可以对其进行操作,但是没有一个好的库是免费的(无论如何还是几年前)。

相关问题