我在公司的产品中写了一个方法,利用Excel 2007的COM自动化导出数据,一年半之前。但现在我发现,在办公室的机器上它不再工作了。
我在自己的电脑上测试了该方法的功能,并得到了同样的结果。
深入挖掘后,我发现当我执行以下代码时:
如果我在excel对象上添加一个监视器,我会发现每个属性都会抛出一个类型转换异常。
经过一些研究,我发现有些注册表键可能会干扰自动化。我设法找到并删除了一个注册表键:
其中定义了以下字符串值:
然后我再次运行同样的代码,这一次它完美地运行了。
我在办公室测试应用程序的其他计算机也遇到了相同的错误,但我无法以同样的方式修复它们。
有人遇到过这种情况吗?谢谢。
我在自己的电脑上测试了该方法的功能,并得到了同样的结果。
深入挖掘后,我发现当我执行以下代码时:
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
然后我再次运行同样的代码,这一次它完美地运行了。
我在办公室测试应用程序的其他计算机也遇到了相同的错误,但我无法以同样的方式修复它们。
有人遇到过这种情况吗?谢谢。
stevenroberts
- 在这种情况下,Office 14 互操作程序集必须已经与 Visual Studio 一起安装。毕竟,如果您没有明确安装互操作程序集,它必须来自某个地方,而且仍然有可能客户端机器上没有它。您有检查过吗? - Enigmativity