Microsoft Excel COM自动化的问题

时间:2010-09-15 23:43:19

标签: c# excel-2007 office-interop

所以我在一年半前在我公司的产品中编写了一个方法,它利用Excel 2007的COM自动化来导出数据,但现在我发现它不再适用于办公室的机器。

我在自己的机器上测试了该方法的功能,并得到了相同的结果。

深入挖掘,我发现当我到达

var excel = Excel.Application

如果我在excel对象上添加一个监视,我会看到每个属性都抛出一个强制转换异常。

在做了一些研究后,我看到了一些可能会干扰自动化的注册表项。 我设法挖掘并删除了一个注册表项:

HKEY_CLASSES_ROOT\TypeLib{00020813-0000-0000-C000-000000000046}\1.7

在以下字符串中定义以下字符串值:

"PrimaryInteropAssemblyName"="Microsoft.Office.Interop.Excel, Version=14.0.0.0

然后我再次运行相同的代码,只是这次运行得很好。

办公室中我测试过该应用程序的其他机器也有同样的错误,只是我无法以同样的方式修复它们。

之前有没有其他人遇到过这种情况?
谢谢

1 个答案:

答案 0 :(得分:1)

Office的第14版是Office 2010,因此我假设您的办公室已从2007年升级到2010年。

现在,如果您的计算机是开发人员计算机,那么我希望您的计算机上有Microsoft.Office.Interop.Excel, Version=14.0.0.0程序集,因此您的修复工作正常。

但是,我想办公室中的其他计算机已经部署了代码,因此他们将拥有Microsoft.Office.Interop.Excel, Version=12.0.0.0程序集,但不会部署Microsoft.Office.Interop.Excel, Version=14.0.0.0

如果我是你,我会先检查一下。

描述你在问题中得到的实际错误可能也很有用,但希望我的答案有所帮助。