所以我一年半前在我公司的产品中写了一个方法,利用Excel 2007的COM自动化导出数据,现在我发现它不再适用于办公室的机器。
我在自己的机器上测试了该方法的功能,得到了相同的结果。
深入挖掘,我发现当我到达最远的地方时
var excel = Excel.应用程序
如果我在 excel 对象上添加监视,我会看到每个属性都会抛出一个转换异常。
在做了一些研究之后,我看到了一些关于注册表项的信息,这些注册表项可能会干扰自动化。 我设法挖掘并删除了一个注册表项:
HKEY_CLASSES_ROOT\TypeLib{00020813-0000-0000-C000-000000000046}\1.7
在其中定义了以下字符串值:
"PrimaryInteropAssemblyName"="Microsoft.Office.Interop.Excel, Version=14.0.0.0
然后我再次运行同一段代码,只是这次运行得非常好。
我测试过该应用程序的办公室其他机器也有同样的错误,只是我没能用同样的方法修复它们。
有没有其他人以前遇到过这个?
谢谢
最佳答案
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
已部署。
如果我是你,我会先检查一下。
描述您在问题中遇到的实际错误可能也很有用,但希望我的回答能有所帮助。
关于c# - Microsoft Excel COM 自动化的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3722678/