C#中的COM互操作问题#

问题描述:

嗨,我有一个应用程序,其中一个工作将从Excel文件中提取所有记录,并且使用COM Interop。C#中的COM互操作问题#

所以这工作正常,它正在做我真正想要的。问题在于,如果我们在项目中添加对库版本14.0(Office 2010)的引用,但是如果我们选择我们的应用程序,并且如果我们在任何带有不同版本的Office 2010的PC中运行它,他将不会识别因为它有不同的版本(例如Office 2007 - 版本12.0)。

所以有什么办法可以避免这种情况?

在此先感谢!

我想如果你使用迟绑定和使用版本indeid progid。

+0

http://support.microsoft.com/kb/302902/EN-US – NickD 2011-04-25 08:05:58

如果您只需要读取excel以外的excel文件,我建议您使用第三方完全托管的库,例如“Spreadsheet Gear”或“GemBox”,它们更快更容易使用。 (有开放源代码xls解析器和库,用于打开xml xlsx格式,但我没有测试它们)

如果您需要在excel内部工作,我知道只有提供版本无关的办公室互操作性的“Add-in Express” dll文件。

+0

如果这是一个选项,请使用打开xml sdk 2.0。 http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0&displaylang=en这是免费且易于使用的。 – NickD 2011-04-25 09:13:54

最好的方法是针对您需要获得支持的最旧Office版本进行编程。但实际上,您可以使用任何互操作版本来支持尽可能多的Office版本,请参阅Supporting several Office versions in an add-in. Interop assemblies and late binding.