c# - Microsoft Excel COM 自动化的问题

标签 c# excel-2007 office-interop

所以我一年半前在我公司的产品中写了一个方法,利用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/

相关文章:

c# wpf importing excel 性能

c# - 在 C# 中用同一位置的图像替换文本

c# - 如何使用该库的所有引用添加对类库的引用?

c# - WinForms 应用程序覆盖行并添加数据两次

c# - GetAllWithChildren() 性能问题

excel - COUNTIFS 忽略隐藏行 excel 2007

Excel VBA - 范围之间的引用

c# - MVC 模型绑定(bind)到列表 - 仅适用于列表中的第一项

excel - 使用数组元素填充 VBA 中的组合框

c# - C# 生成的 Excel 工作表中的自动调整列宽