.NET instalētās Excel iekšējās versijas pārbaude

Lapa atjaunota :
Lapas izveides datums :

Darbības vide

Visual Studio
  • Visual Studio 2022
.NETO
  • .NET 6.0
Windows
  • Operētājsistēmā Windows 11
Excel
  • Microsoft 365

Priekšnoteikumi

Windows
  • Viena no versijām
Excel
  • Viena no versijām

Par iekšējām versijām

Šoreiz jūs varat pārbaudīt Excel iekšējo versiju programmiski, bet no 2023/05/07 Excel 2016 un jaunākas versijas iekšējā versija nav mainījusies no 16.0. Tā rezultātā vairs nav iespējams identificēt Excel 2016, 2019, 2021 un Microsoft 265 pēc to iekšējām versijām. Tomēr, tā kā iekšējā versija nav mainījusies, priekšrocība ir tā, ka, kamēr neiznāk jauna versija, Excel bibliotēku var izmantot kopīgi kopš 2016. gada.

Par operētājsistēmu

Jūs varat uzzināt, kura Excel iekšējā versija ir instalēta ar šādu kodu: Tā kā tā ir metode, ir iespējams to nogādāt savā programmā, kāda tā ir. GetInstallExcelVersion Ja izsaucat metodi, versija tiks atgriezta kā numurs.

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

Vienkāršs programmas skaidrojums ir izmantot metodi, lai Excel.Application iegūtu programmas ID veiduType.GetTypeFromProgID, Activator.CreateInstance Ar šo metodi tiek Excel.Application izveidots piemērs . Excel.Application Iemesls, kāpēc netiek ģenerēts tiešs gadījums, ir izvairīties no paļaušanās uz Excel bibliotēkas versiju, tieši atsaucoties uz to. To darot, jūs varēsiet redzēt jaunāko versiju.

Pēc tam varat atsaukties Version uz rekvizītiem no ģenerētās application instances un iegūt versiju. Izgūtā versija ir versija, kas programmai Excel ir iekšēji. Piemēram, Excel 2010 ir 14,0, Excel 2013 ir 15,0 un Excel 2016 un jaunākas versijas ir 16,0.

Ņemiet vērā, ka šis process neatšķiras no faktiskās Excel startēšanas, tādēļ, ja jūs neizsauksit metodi un Excel.Application atlaidīsit , System.Runtime.InteropServices.Marshal.ReleaseComObject Excel process paliks.

Starp citu, šis kods ir pārbaudīts .NET 6, bet es domāju, ka to var izmantot .NET Framework tādā pašā veidā. Tas darbojas .NET, taču Type.GetTypeFromProgID ņemiet vērā, ka metodes un metodes ir tikai Windows kods un System.Runtime.InteropServices.Marshal.ReleaseComObject nedarbosies citās platformās.