Sprawdź wewnętrzną wersję programu Excel zainstalowaną na platformie .NET

Strona zaktualizowana :
Data utworzenia strony :

Środowisko pracy

Visual Studio
  • informacji o wersji Visual Studio 2022
.SIEĆ
  • .NET 6.0
Windows
  • Okna 11
Programu excel
  • Platforma Microsoft 365

Warunki wstępne

Windows
  • Jedna z wersji
Programu excel
  • Jedna z wersji

Informacje o wersjach wewnętrznych

Tym razem możesz programowo sprawdzić wewnętrzną wersję programu Excel, ale od 07.05.2023 wewnętrzna wersja programu Excel 2016 i nowszych nie zmieniła się w stosunku do wersji 16.0. W związku z tym nie jest już możliwe zidentyfikowanie programu Excel 2016, 2019, 2021 i Microsoft 265 na podstawie ich wewnętrznych wersji. Ponieważ jednak wersja wewnętrzna się nie zmieniła, zaletą jest to, że dopóki nie pojawi się nowa wersja, biblioteka Excel może być używana wspólnie od 2016 roku.

O programie operacyjnym

Możesz dowiedzieć się, która wewnętrzna wersja programu Excel jest zainstalowana, za pomocą następującego kodu: Ponieważ jest to metoda, można ją przenieść do własnego programu w takiej postaci, w jakiej jest. GetInstallExcelVersion Jeśli wywołasz metodę, wersja zostanie zwrócona jako liczba.

/// <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);
    }
  }
}

Prostym wyjaśnieniem programu jest użycie metody w celu Excel.Application uzyskania typu identyfikatoraType.GetTypeFromProgID programu, Activator.CreateInstance Metoda tworzy instancję Excel.Application . Excel.Application Powodem, dla którego nie generowane jest bezpośrednie wystąpienie, jest uniknięcie polegania na wersji biblioteki programu Excel przez bezpośrednie odwoływanie się do niej. W ten sposób będziesz mógł zobaczyć najnowszą wersję.

Następnie możesz odwołać się do Version właściwości z wygenerowanego application wystąpienia i pobrać wersję. Pobierana wersja jest wersją wewnętrznie zainstalowaną przez program Excel. Na przykład Excel 2010 to 14.0, Excel 2013 to 15.0, a Excel 2016 i nowsze to 16.0.

Zauważ, że ten proces nie różni się od faktycznego uruchamiania programu Excel, więc jeśli nie wywołasz metody i Excel.Application nie zwolnisz , System.Runtime.InteropServices.Marshal.ReleaseComObject proces programu Excel pozostanie.

Nawiasem mówiąc, ten kod został przetestowany na .NET 6, ale myślę, że można go używać w .NET Framework w bardzo podobny sposób. Działa na platformie .NET, ale Type.GetTypeFromProgID należy pamiętać, że metody i metody są kodem tylko dla systemu Windows i System.Runtime.InteropServices.Marshal.ReleaseComObject nie będą działać na innych platformach.