我想知道最好的方法:
我有一个适用于Excel DOM的应用。用户可能安装了Excel 2003或2007,我不知道哪一个是先验的。我是一个C#控制台应用程序。
如何让我的应用兼容两者?是否可以在运行时找到相应的版本并修改Using语句?例如,我似乎记得要使用Excel 2003,我使用相应的引用dll编写Using Microsoft.Excel
或Excel
,但对于2007,我需要Using.interop.Excel
或类似的东西。 ..现在不是重点,但让问题更加清晰。此外,许多类型的Excel 2003都没有明确定义(例如,series
是Arrays
的{{1}},而在2007年,其中一些更强烈“键入“,等等
如果问题还不够明确,我很乐意编辑。
感谢。
答案 0 :(得分:1)
考虑使用MS Office For Net,一个处理许多Office版本的包装库。
如果这对您不起作用,请编写您需要支持的最早版本的互操作程序集。对于一个项目,我在我的电脑上安装了当前版本,但是我用作构建机器的虚拟机上安装了我支持的最旧版本。在那种情况下,我必须小心只使用旧API中的可用内容(否则编译将在构建VM上失败)。
答案 1 :(得分:0)
我们尝试了一段时间来获取一些针对Excel 2003和Excel 2007运行的COM Interop测试代码,但最终决定仅支持Excel 2007,因为API存在差异。
如果你真的需要支持两者,我的建议是你的应用程序/库有两个版本。第一个将写入Excel 2003并构建在仅安装了Excel 2003的计算机上。第二个是为了支持Excel 2007而编写的,并且是在只安装了Excel 2007的机器上构建的。
您可能想尝试支持.xls和.xlsx文件的SpreadsheetGear for .NET,并且不再依赖Excel。您可以下载免费评估here。
免责声明:我拥有SpreadsheetGear LLC