所以我在一年半前在我公司的产品中编写了一个方法,它利用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
然后我再次运行相同的代码,只是这次运行得很好。
办公室中我测试过该应用程序的其他机器也有同样的错误,只是我无法以同样的方式修复它们。
之前有没有其他人遇到过这种情况?
谢谢
答案 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
。
如果我是你,我会先检查一下。
描述你在问题中得到的实际错误可能也很有用,但希望我的答案有所帮助。