Skontrolujte internú verziu programu Excel nainštalovaného v rozhraní .NET

Stránka aktualizovaná :
Dátum vytvorenia strany :

Prevádzkové prostredie

Vizuálne štúdio
  • Visual Studio 2022
.SIEŤ
  • .NET 6.0
Windows
  • Windows 11
Vynikať
  • Microsoft 365

Predpoklady

Windows
  • Jedna z verzií
Vynikať
  • Jedna z verzií

Informácie o interných verziách

Tentokrát môžete internú verziu programu Excel skontrolovať programovo, ale od 7. 5. 2023 sa interná verzia programu Excel 2016 a novšie nezmenila zo 16.0. V dôsledku toho už nie je možné identifikovať Excel 2016, 2019, 2021 a Microsoft 265 podľa ich interných verzií. Keďže sa však interná verzia nezmenila, výhodou je, že pokiaľ nevyjde nová verzia, knižnicu programu Excel je možné používať spoločne od roku 2016.

O operačnom programe

Môžete zistiť, ktorá interná verzia programu Excel je nainštalovaná pomocou nasledujúceho kódu: Keďže ide o metódu, je možné ju priniesť do vlastného programu tak, ako je. GetInstallExcelVersion Ak zavoláte metódu, verzia sa vráti ako číslo.

/// <summary>
/// インストールされている Excel の内部バージョンを取得します。
/// </summary>
/// <returns>インストールされている Excel の内部バージョン。正常に取得できなかった場合は 0 を返します。</returns>
static decimal GetInstallExcelVersion()
{
  // Excel.Application の Type を取得
  var type = Type.GetTypeFromProgID("Excel.Application");
  if (type == null)
  {
    // Excel がインストールされていない
    return 0;
  }

  object? application = null;
  try
  {
    // Excel.Application のインスタンスを生成します
    application = Activator.CreateInstance(type);
    if (application == null)
    {
      // Excel.Application の生成に失敗
      return 0;
    }

    // バージョンを取得
    var ver = application.GetType().InvokeMember("Version", System.Reflection.BindingFlags.GetProperty, null, application, null);
    if (ver == null)
    {
      return 0;
    }

    // 文字列を数値に変換します
    decimal version;
    if (!decimal.TryParse(ver.ToString(), out version))
    {
      return 0;
    }
    return version;
  }
  finally
  {
    // 生成した Excel のリソースを解放します
    if (application != null)
    {
      System.Runtime.InteropServices.Marshal.ReleaseComObject(application);
    }
  }
}

Jednoduchým vysvetlením programu je použitie metódy na Excel.Application získanie typuType.GetTypeFromProgID ID programu, Activator.CreateInstance Metóda vytvorí Excel.Application inštanciu súboru . Excel.Application Dôvodom negenerovania priamej inštancie programu je vyhnúť sa spoliehaniu sa na verziu knižnice programu Excel priamym odkazom. Týmto spôsobom uvidíte najnovšiu verziu.

Potom sa môžete odvolať na Version vlastnosti z vygenerovanej application inštancie a získať verziu. Načítaná verzia je verzia, ktorú má Excel interne. Napríklad Excel 2010 je 14.0, Excel 2013 je 15.0 a Excel 2016 a novšie verzie sú 16.0.

Všimnite si, že tento proces sa nelíši od skutočného spustenia programu Excel, takže ak nezavoláte metódu a Excel.Application uvoľnenie , System.Runtime.InteropServices.Marshal.ReleaseComObject proces programu Excel zostane.

Mimochodom, tento kód bol testovaný na .NET 6, ale myslím si, že môže byť použitý v .NET Framework v podstate rovnakým spôsobom. Funguje v .NET, ale Type.GetTypeFromProgID majte na pamäti, že metódy a metódy sú iba kód systému Windows a System.Runtime.InteropServices.Marshal.ReleaseComObject nebudú fungovať na iných platformách.