NET-be telepített Excel belső verziójának ellenőrzése

Oldal frissítve :
Oldal létrehozásának dátuma :

Működési környezet

Visual Studio
  • Visual Studio 2022
.HÁLÓ
  • .NET 6.0
Windows
  • Windows 11 esetén
Kitűnik
  • Microsoft 365 esetén

Előfeltételek

Windows
  • Az egyik változat
Kitűnik
  • Az egyik változat

A belső verziók ismertetése

Ezúttal programozott módon ellenőrizheti az Excel belső verzióját, de 2023/05/07-től az Excel 2016-os és újabb verziói nem változtak a 16.0-ról. Ennek eredményeképpen már nem lehet azonosítani az Excel 2016-ot, 2019-et, 2021-et és Microsoft 265-öt belső verziójuk alapján. Mivel azonban a belső verzió nem változott, az az előnye, hogy amíg nem jelenik meg új verzió, az Excel könyvtár 2016 óta közösen használható.

Az operációs programról

A következő kóddal megtudhatja, hogy az Excel melyik belső verziója van telepítve: Mivel ez egy módszer, lehetőség van arra, hogy a saját programjába hozza, ahogy van. GetInstallExcelVersion Ha meghívja a metódust, a verzió számként lesz visszaadva.

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

A program egyszerű magyarázata az, hogy a módszert Excel.Application használja a programazonosító típusánakType.GetTypeFromProgID megszerzéséhez, Activator.CreateInstance A metódus létrehozza Excel.Application a példányát. Excel.Application A közvetlen példánya létrehozásának azért nem hozható létre, mert nem hagyatkozhat az Excel-kódtár verziójára azáltal, hogy közvetlenül hivatkozik rá. Ezzel láthatja a legújabb verziót.

Ezután hivatkozhat a létrehozott application példány tulajdonságaira, Version és lekérheti a verziót. A beolvasott verzió az Excel belső verziója. Az Excel 2010 például 14,0, az Excel 2013 15,0, az Excel 2016 és újabb pedig 16,0.

Ne feledje, hogy ez a folyamat nem különbözik az Excel tényleges indításától, így ha nem hívja meg a metódust, és Excel.Application nem engedi el, System.Runtime.InteropServices.Marshal.ReleaseComObject az Excel folyamat megmarad.

Egyébként ezt a kódot a .NET 6-on tesztelték, de úgy gondolom, hogy a .NET keretrendszerben ugyanúgy használható. NET-ben működik, de Type.GetTypeFromProgID ne feledje, hogy a módszerek és módszerek csak Windows-kódok, és System.Runtime.InteropServices.Marshal.ReleaseComObject más platformokon nem működnek.