Обнаружение установленной версии Excel (и пакетов Обновления)
Я должен быть в состоянии определить, какая версия Excel установлена на моей машине из некоторого кода .NET, который я разрабатываю. В настоящее время я использую приложение .Версия для этого, но она не дает мне информацию о пакетах обновления.
Я бы предпочел держаться подальше от чего-то подобного: http://www.mvps.org/access/api/api0065.htm
Управляемый код приветствуется!
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" (вам нужно будет реализовать сравнение)