Обнаружение установленной версии Excel (и пакетов Обновления)


Я должен быть в состоянии определить, какая версия Excel установлена на моей машине из некоторого кода .NET, который я разрабатываю. В настоящее время я использую приложение .Версия для этого, но она не дает мне информацию о пакетах обновления.

Я бы предпочел держаться подальше от чего-то подобного: http://www.mvps.org/access/api/api0065.htm

Управляемый код приветствуется!

4 5

4 ответа:

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

Возвращает 0, если excel не найден.

К сожалению, этот подход является единственным надежным подходом. Даже Microsoft предлагает использовать аналогичный метод (это для проверки вручную, но концепция идентична).

Если вы хотите сделать это в управляемом коде, я бы предложил просто перенести код из вашей ссылки и сделать класс, который легко расширяется при выпуске новых пакетов обновления.

Вы можете проверить пути приложения в реестре для пути к exe, а затем получить его версию: См. http://www.codeproject.com/KB/office/getting_office_version.aspx

Хотя этот подход и не является надежным, он является единственным известным мне способом.

Имейте в виду, что вам не нужно проверять точное совпадение. Вы можете использовать сравнения по отдельным значениям, чтобы увидеть, является ли ваша версия, например, SP1 или новее. вы знаете, что это новее, если номер версии больше или равен "11.0.6355.0" (вам нужно будет реализовать сравнение)