通过com互操作性在c#中实现2003-2010版本的Excel自动化
本文关键字:版本 2003-2010 Excel 自动化 实现 com 互操作性 通过 | 更新日期: 2023-09-27 18:19:37
有不同的办公版本,不同的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;