一个应用程序中有两个版本的Excel?

时间:2009-09-09 16:39:49

标签: c# excel

我想知道最好的方法:

我有一个适用于Excel DOM的应用。用户可能安装了Excel 2003或2007,我不知道哪一个是先验的。我是一个C#控制台应用程序。

如何让我的应用兼容两者?是否可以在运行时找到相应的版本并修改Using语句?例如,我似乎记得要使用Excel 2003,我使用相应的引用dll编写Using Microsoft.ExcelExcel,但对于2007,我需要Using.interop.Excel或类似的东西。 ..现在不是重点,但让问题更加清晰。此外,许多类型的Excel 2003都没有明确定义(例如,seriesArrays的{​​{1}},而在2007年,其中一些更强烈“键入“,等等

如果问题还不够明确,我很乐意编辑。

感谢。

2 个答案:

答案 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