Kontrollige .NET-i installitud Exceli sisemist versiooni

Lehekülg uuendatud :
Lehe loomise kuupäev :

Töökeskkond

Visuaalne stuudio
  • Visual Studio 2022
.NET
  • .NET 6.0
Windows
  • Windows 11
Excel
  • Microsoft 365

Eeltingimused

Windows
  • Üks versioonidest
Excel
  • Üks versioonidest

Teave sisemiste versioonide kohta

Seekord saate Exceli sisemist versiooni programmiliselt kontrollida, kuid alates 2023/05/07 ei ole Excel 2016 ja uuemate versioonide sisemine versioon 16.0-st muutunud. Seetõttu pole enam võimalik excel 2016, 2019, 2021 ja Microsoft 265 nende siseversioonide järgi tuvastada. Kuna sisemine versioon ei ole muutunud, on eeliseks see, et seni, kuni uus versioon ei tule välja, saab Exceli raamatukogu kasutada ühiselt alates 2016. aastast.

Operatsiooniprogrammi kohta

Saate teada, milline Exceli sisemine versioon on installitud järgmise koodiga: Kuna see on meetod, on võimalik see oma programmi viia nii, nagu see on. GetInstallExcelVersion Kui helistate meetodile, tagastatakse versioon numbrina.

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

Programmi lihtne selgitus on kasutada meetodit Excel.Application programmi ID tüübiType.GetTypeFromProgID saamiseks, Activator.CreateInstance Meetod loob Excel.Application eksemplari . Excel.Application Põhjus, miks otsest eksemplari ei looda, on vältida Exceli teegi versioonile tuginemist, viidates sellele otse. Seda tehes näete uusimat versiooni.

Seejärel saate viidata Version loodud application eksemplari atribuutidele ja hankida versiooni. Allalaaditav versioon on see versioon, mis Excelil sisemiselt on. Näiteks Excel 2010 on 14,0, Excel 2013 on 15,0 ning Excel 2016 ja uuemad versioonid on 16,0.

Pange tähele, et see protsess ei erine Exceli tegelikust käivitamisest, nii et kui te ei helista meetodile ja Excel.Application vabastate , System.Runtime.InteropServices.Marshal.ReleaseComObject jääb Exceli protsess alles.

Muide, seda koodi on testitud .NET 6-ga, kuid ma arvan, et seda saab .NET Frameworkis kasutada samamoodi. See töötab .NET-is, kuid Type.GetTypeFromProgID pidage meeles, et meetodid ja meetodid on ainult Windowsi kood ja System.Runtime.InteropServices.Marshal.ReleaseComObject ei tööta teistel platvormidel.