Preverite notranjo različico Excela, nameščeno v ogrodju .NET

Stran posodobljena :
Datum ustvarjanja strani :

Delovno okolje

Visual Studio
  • Visual Studio 2022
.MREŽA
  • .NET 6.0
Windows
  • Windows 11
Excel
  • Microsoft 365

Predpogoji

Windows
  • Ena od različic
Excel
  • Ena od različic

O notranjih različicah

Tokrat lahko programsko preverite notranjo različico Excela, vendar se od 2023/05/07 notranja različica Excela 2016 in novejših ni spremenila iz 16.0. Zato ni več mogoče prepoznati Excela 2016, 2019, 2021 in Microsoft 265 po njihovih notranjih različicah. Ker pa se notranja različica ni spremenila, je prednost v tem, da dokler ne izide nova različica, se lahko knjižnica Excel uporablja skupno od leta 2016.

O operacijskem programu

Ugotovite, katera notranja različica Excela je nameščena s to kodo: Ker gre za metodo, jo je mogoče prenesti v svoj program, kot je. GetInstallExcelVersion Če pokličete metodo, bo različica vrnjena kot številka.

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

Preprosta razlaga programa je uporaba metode za Excel.Application pridobitev vrste ID-jaType.GetTypeFromProgID programa, Activator.CreateInstance Metoda ustvari primerek Excel.Application . Excel.Application Razlog za to, da ne ustvarite neposrednega primerka, je, da se izognete zanašanju na različico Excelove knjižnice tako, da se nanjo neposredno sklicujete. S tem boste lahko videli najnovejšo različico.

Nato se lahko sklicujete Version na lastnosti iz ustvarjenega application primerka in dobite različico. Pridobljena različica je različica, ki jo ima Excel interno. Excel 2010 je na primer 14.0, Excel 2013 15.0, Excel 2016 in novejše različice pa 16.0.

Upoštevajte, da se ta postopek ne razlikuje od dejanskega zagona Excela, zato, če ne pokličete metode in Excel.Application izdajeSystem.Runtime.InteropServices.Marshal.ReleaseComObject, bo Excelov proces ostal.

Mimogrede, ta koda je bila preizkušena na .NET 6, vendar mislim, da jo je mogoče uporabiti v ogrodju .NET Framework na enak način. Deluje v .NET, vendar Type.GetTypeFromProgID ne pozabite, da so metode in metode koda samo za Windows in System.Runtime.InteropServices.Marshal.ReleaseComObject ne bodo delovale na drugih platformah.