通过com互操作性在c#中实现2003-2010版本的Excel自动化



有不同的办公版本,不同的com类型库用于管理它们。

有人能告诉我应该如何编写代码来在不同的Excel版本上操作吗?办公室的PIA怎么样?我应该把它们都包括在项目中吗?

如何解决office的多版本化问题?

这与编写.NET程序并期望它在Windows98和Windows7上运行没有本质区别。第一个选择是显而易见的,你需要以.NET 2.0为目标,否则它就不会在98上运行。与Office相同,请选择要支持的最低版本。

Microsoft在保持Office的COM互操作向后兼容方面做得很好,使用较新版本Office的用户很可能会毫无问题地使用您的程序。这当然是而不是的保证,你需要测试它。它本身应该是你愿意支持什么版本的Office的指南。它最好是你可以访问的。MSDN订阅是获得不同版本的好方法。

使用Wiktor建议的后期绑定是你最不想做的事情。它不会阻止你意外使用早期版本中不可用的接口。

1)利用动态绑定

2) 坚持后期绑定

并且您的代码将适用于任何版本。

// work with any version
Type wordType = Type.GetTypeFromProgId( "Word.Application" );
dynamic wordApp = Activator.CreateInstance( wordType );
// late binding + dynamics - always works
wordApp.Visible = true;

最新更新