Patikrinkite vidinę "Excel" versiją, įdiegtą .NET

Puslapis atnaujintas :
Puslapio sukūrimo data :

Darbo aplinka

Vizualinė studija
  • "Visual Studio 2022"
.GRYNOJI
  • .NET 6.0
Windows
  • Langai 11
Excel
  • "Microsoft 365"

Būtinosios sąlygos

Windows
  • Viena iš versijų
Excel
  • Viena iš versijų

Apie vidines versijas

Šį kartą vidinę "Excel" versiją galite patikrinti programiškai, tačiau nuo 2023/05/07 vidinė "Excel 2016" ir naujesnė versija nepasikeitė nuo 16.0. Todėl nebeįmanoma identifikuoti "Excel 2016", "2019", "2021" ir "Microsoft 265" pagal jų vidines versijas. Tačiau, kadangi vidinė versija nepasikeitė, privalumas yra tas, kad tol, kol neišeina nauja versija, "Excel" biblioteka gali būti naudojama bendrai nuo 2016 m.

Apie operacinę programą

Galite sužinoti, kuri vidinė "Excel" versija įdiegta naudojant šį kodą: Kadangi tai yra metodas, galima jį perkelti į savo programą tokią, kokia ji yra. GetInstallExcelVersion Jei paskambinsite šiuo metodu, versija bus grąžinta kaip numeris.

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

Paprastas programos paaiškinimas yra naudoti metodą, kad Excel.Application gautumėte programos ID tipąType.GetTypeFromProgID, Activator.CreateInstance Metodas sukuria Excel.Application . Excel.Application Tiesioginio egzemplioriaus negeneravimo priežastis yra išvengti pasitikėjimo "Excel" bibliotekos versija, nurodant ją tiesiogiai. Tai darydami galėsite pamatyti naujausią versiją.

Tada galite peržiūrėti Version sugeneruoto application egzemplioriaus ypatybes ir gauti versiją. Nuskaityta versija yra ta, kurią programa "Excel" turi viduje. Pavyzdžiui, "Excel 2010" yra 14,0, "Excel 2013" yra 15,0, o "Excel 2016" ir naujesnės versijos yra 16,0.

Atkreipkite dėmesį, kad šis procesas nesiskiria nuo "Excel" paleidimo, taigi, jei neiškviesite metodo ir Excel.Application išleisite , System.Runtime.InteropServices.Marshal.ReleaseComObject "Excel" procesas išliks.

Beje, šis kodas buvo išbandytas .NET 6, bet manau, kad jis gali būti naudojamas .NET Framework panašiai. Jis veikia .NET, tačiau Type.GetTypeFromProgID atminkite, kad metodai ir metodai yra tik "Windows" kodas ir System.Runtime.InteropServices.Marshal.ReleaseComObject neveiks kitose platformose.