Zkontrolujte interní verzi Excelu nainstalovanou v .NET

Stránky aktualizovány :
Datum vytvoření stránky :

Provozní prostředí

Visual Studio
  • Visual Studio 2022
.SÍŤ
  • .NET 6.0
Windows
  • Systém Windows 11
Vynikat
  • Microsoft 365

Požadavky

Windows
  • Jedna z verzí
Vynikat
  • Jedna z verzí

O interních verzích

Tentokrát můžete interní verzi Excelu zkontrolovat programově, ale od 7. 5. 2023 se interní verze Excelu 2016 a novější od 16.0 nezměnila. V důsledku toho již není možné identifikovat Excel 2016, 2019, 2021 a Microsoft 265 podle jejich interních verzí. Vzhledem k tomu, že se však interní verze nezměnila, je výhodou, že dokud nevyjde nová verze, lze knihovnu Excel běžně používat od roku 2016.

O operačním programu

Pomocí následujícího kódu můžete zjistit, která interní verze Excelu je nainstalována: Vzhledem k tomu, že se jedná o metodu, je možné ji přenést do vlastního programu tak, jak je. GetInstallExcelVersion Pokud zavoláte metodu, verze se vrátí jako čí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 vysvětlením programu je použití metody k Excel.Application získání typuType.GetTypeFromProgID ID programu, Activator.CreateInstance Metoda vytvoří Excel.Application instanci . Excel.Application Důvodem, proč negenerovat přímou instanci, je vyhnout se spoléhání se na verzi knihovny aplikace Excel tím, že na ni přímo odkazujete. Tímto způsobem budete moci vidět nejnovější verzi.

Pak můžete odkazovat na Version vlastnosti z vygenerované application instance a získat verzi. Načtená verze je verze, kterou má Excel interně. Například Excel 2010 je 14.0, Excel 2013 je 15.0 a Excel 2016 a novější je 16.0.

Všimněte si, že tento proces se neliší od skutečného spuštění Excelu, takže pokud metodu nezavoláte a Excel.Application neuvolníte, System.Runtime.InteropServices.Marshal.ReleaseComObject proces Excel zůstane.

Mimochodem, tento kód byl testován na .NET 6, ale myslím, že jej lze použít v .NET Frameworku v podstatě stejným způsobem. Funguje v .NET, ale Type.GetTypeFromProgID mějte na paměti, že metody a metody jsou pouze kód pro Windows a System.Runtime.InteropServices.Marshal.ReleaseComObject nebudou fungovat na jiných platformách.