Überprüfen Sie die interne Version von Excel, die in .NET installiert ist.

Diese Seite wurde aktualisiert :
Erstellungsdatum der Seite :

Betriebsumgebung

Visual Studio
  • Visual Studio 2022
.NETTO
  • .NET 6.0
Fenster
  • Windows 11
Ausstechen
  • Microsoft 365

Voraussetzungen

Fenster
  • Eine der Versionen
Ausstechen
  • Eine der Versionen

Informationen zu internen Versionen

Dieses Mal können Sie die interne Version von Excel programmgesteuert überprüfen, aber ab dem 07.05.2023 hat sich die interne Version von Excel 2016 und höher gegenüber 16.0 nicht geändert. Dadurch ist es nicht mehr möglich, Excel 2016, 2019, 2021 und Microsoft 265 anhand ihrer internen Versionen zu identifizieren. Da sich die interne Version jedoch nicht geändert hat, ist der Vorteil, dass die Excel-Bibliothek seit 2016 gemeinsam genutzt werden kann, solange keine neue Version herauskommt.

Über das Betriebsprogramm

Mit dem folgenden Code können Sie herausfinden, welche interne Version von Excel installiert ist: Da es sich um eine Methode handelt, ist es möglich, sie so in Ihr eigenes Programm zu bringen, wie sie ist. GetInstallExcelVersion Wenn Sie die Methode aufrufen, wird die Version als Zahl zurückgegeben.

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

Eine einfache Erklärung des Programms besteht darin, die Methode zu verwenden, um den Typ derType.GetTypeFromProgID Programm-ID zu Excel.Application erhalten. Activator.CreateInstance Die Methode erstellt eine Excel.Application Instanz von . Excel.Application Der Grund dafür, dass keine direkte Instanz von generiert wird, besteht darin, dass Sie sich nicht auf die Version der Excel-Bibliothek verlassen müssen, indem Sie direkt darauf verweisen. Auf diese Weise können Sie die neueste Version sehen.

Sie können dann auf Version die Eigenschaften der generierten application Instanz verweisen und die Version abrufen. Die abgerufene Version ist die Version, über die Excel intern verfügt. Excel 2010 ist z. B. 14.0, Excel 2013 15.0 und Excel 2016 und höher 16.0.

Beachten Sie, dass sich dieser Prozess nicht vom tatsächlichen Starten von Excel unterscheidet, d. h., wenn Sie die Methode nicht aufrufen und Excel.Application freigeben, System.Runtime.InteropServices.Marshal.ReleaseComObject bleibt der Excel-Prozess erhalten.

Übrigens wurde dieser Code auf .NET 6 getestet, aber ich denke, dass er in .NET Framework auf die gleiche Weise verwendet werden kann. Es funktioniert in .NET, aber Type.GetTypeFromProgID denken Sie daran, dass es sich bei den Methoden und Methoden um reinen Windows-Code handelt, System.Runtime.InteropServices.Marshal.ReleaseComObject der auf anderen Plattformen nicht funktioniert.