【问题标题】:Detecting Installed Excel Version (and Service Packs)检测已安装的 Excel 版本(和服务包)
【发布时间】:2010-10-25 22:18:54
【问题描述】:

我需要能够从我正在开发的一些 .NET 代码中检测我在我的机器中安装了哪个版本的 Excel。我目前为此使用 Application.Version,但它没有提供有关 Service Pack 的信息。

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

欢迎使用托管代码!

【问题讨论】:

    标签: vb.net excel


    【解决方案1】:
    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 版本怎么办?
    • 你的回答给了我我想要的信息,所以 +1。但是,我必须指出 excel.Version 是一个字符串;例如“11.0”或“15.0”。
    【解决方案2】:

    不幸的是,这种方法是唯一可靠的方法。甚至Microsoft suggests using a similar technique(这是手动检查,但概念相同)。

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

    【讨论】:

      【解决方案3】:

      您可以检查注册表中的应用程序路径以获取 exe 的路径,然后获取其版本: 见http://www.codeproject.com/KB/office/getting_office_version.aspx

      【讨论】:

      • 非常好!我要使用它!
      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-16
        • 2011-06-21
        • 1970-01-01
        • 1970-01-01
        • 2010-10-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多