检测安装的Excel版本(和服务包)

我需要能够从我正在开发的.NET代码中检测出我的机器中安装了哪个版本的Excel。 我目前正在使用Application.Version ,但它没有给我关于服务包的信息。

我最好避开这样的事情: http : //www.mvps.org/access/api/api0065.htm

托pipe代码欢迎!

Public Shared Function GetExcelVersion() As Integer Dim excel As Object = Nothing Dim ver As Integer = 0 Dim build As Integer Try excel = CreateObject("Excel.Application") ver = excel.Version build = excel.Build Catch ex As Exception 'Continue to finally sttmt Finally Try Marshal.ReleaseComObject(excel) Catch End Try GC.Collect() End Try Return ver End Function 

如果找不到excel,则返回0。

不幸的是,这种方法是唯一可靠的方法。 即使微软build议使用类似的技术 (这是为了手动检查,但概念是相同的)。

如果你想在托pipe代码中做到这一点,我build议只是从你的链接移植代码,并build立一个新的服务包发布时很容易扩展的类。

您可以检查registry中的应用程序path的exe文件的path,然后得到它的版本:请参阅http://www.codeproject.com/KB/office/getting_office_version.aspx

虽然不健壮,但这种方法是我所知道的唯一方法。

请记住,您不必检查完全匹配。 您可以使用各个值的比较来查看您拥有的版本是否为SP1或更新版本。 如果版本号大于或等于“11.0.6355.0”,则知道它是较新的(您需要实施比较)