以编程方式识别Excel版本

我的VB.NET(3.5)应用程序生成Excel报告。

较新版本的Excel支持Office Open XML文件格式,而旧版本则不支持。

我希望我的应用程序能够识别本地计算机上安装了哪个版本的Excel,并使用不同的方法来生成报告(较新的版本:通过生成一个XML文件。旧版本:利用Excel自动化)。

我如何识别安装在本地机器上的Excel版本?

您可以查看以下registry项之一:

HKEY_USERS\.DEFAULT\Software\Microsoft\Office\11.0\Excel HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel 

您应该查看是否存在密钥,其中包含“Excel”,因为您可以安装office 2003,并将visio 2007放在一边,所以这两个密钥都将存在,但只有一个会有一个Excel子密钥:

 HKEY_CURRENT_USER\Software\Microsoft\Office\11.0 HKEY_CURRENT_USER\Software\Microsoft\Office\12.0 

数字/版本对应

  • Office 9:Office 2000
  • Office 10:Office XP(支持XML格式工作表的第一个版本)
  • Office 11:Office 2003
  • Office 12:Office 2007
  • 办公室14:办公室2010(有趣的事实,13被跳过)

您可以打开Excel的实例并检查版本:

 Dim appExcel As Object appExcel = CreateObject("Excel.Application") With appExcel Debug.Print(Val(.application.version)) .quit() appExcel = Nothing End With