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

5
我需要能够从我正在开发的一些.NET代码中检测我在计算机上安装了哪个版本的Excel。 我目前使用的是Application.Version,但它不提供有关服务包的信息。 最好避免像这样的东西: http://www.mvps.org/access/api/api0065.htm 欢迎使用托管代码!
4个回答

6
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。

如果我想从同一段代码中打开特定的Excel版本怎么办? - Rodrigo Souza
你的回答给了我想要的信息,所以加一。但是,我必须指出excel.Version是一个字符串,例如“11.0”或“15.0”。 - Tony Dallimore

2

不幸的是,这种方法是唯一可靠的方法。即使Microsoft也建议使用类似的技术(这是用于手动检查,但概念相同)。

如果您想在托管代码中执行此操作,我建议只需从您的链接移植代码,并创建一个易于在发布新服务包时进行扩展的类。


2

非常好!我打算使用它! - Andrew Neely

0

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

请记住,您不必检查完全匹配。您可以对各个值进行比较,以查看您拥有的版本是否为SP1或更高版本。如果版本号大于或等于“11.0.6355.0”,则表示它是更新的(您需要实现比较)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接