Tarkista .NET: ään asennettu Excelin sisäinen versio

Sivu päivitetty :
Sivun luontipäivämäärä :

Toimintaympäristö

Visuaalinen studio
  • Visuaalinen studio 2022
.VERKKO
  • .NET 6.0
Windows
  • Windows 11
Erottua
  • Microsoft 365

Edellytykset

Windows
  • Yksi versioista
Erottua
  • Yksi versioista

Tietoja sisäisistä versioista

Tällä kertaa voit tarkistaa Excelin sisäisen version ohjelmallisesti, mutta vuodesta 2023/05/07 lähtien Excel 2016: n ja uudempien versioiden sisäinen versio ei ole muuttunut versiosta 16.0. Tämän seurauksena Excel 2016, 2019, 2021 ja Microsoft 265 eivät enää ole tunnistettavissa niiden sisäisten versioiden perusteella. Koska sisäinen versio ei kuitenkaan ole muuttunut, etuna on, että niin kauan kuin uusi versio ei tule ulos, Excel-kirjastoa voidaan käyttää yhteisesti vuodesta 2016 lähtien.

Tietoja käyttöohjelmasta

Voit selvittää, mikä Excelin sisäinen versio on asennettu seuraavalla koodilla: Koska se on menetelmä, on mahdollista tuoda se omaan ohjelmaan sellaisenaan. GetInstallExcelVersion Jos kutsut menetelmää, versio palautetaan numerona.

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

Yksinkertainen selitys ohjelmasta on käyttää menetelmää Excel.Application ohjelmatunnuksenType.GetTypeFromProgID tyypin saamiseksi, Activator.CreateInstance Menetelmä luo esiintymän Excel.Application . Excel.Application Syy siihen, että suoraa esiintymää ei luoda, on välttää luottamista Excel-kirjaston versioon viittaamalla siihen suoraan. Näin tekemällä näet uusimman version.

Voit sitten viitata Version luodun application esiintymän ominaisuuksiin ja saada version. Noudettu versio on Excelin sisäinen versio. Esimerkiksi Excel 2010 on 14.0, Excel 2013 on 15.0 ja Excel 2016 ja uudemmat ovat 16.0.

Huomaa, että tämä prosessi ei eroa Excelin käynnistämisestä, joten jos et soita menetelmään ja Excel.Application vapauta , System.Runtime.InteropServices.Marshal.ReleaseComObject Excel-prosessi säilyy.

Muuten, tämä koodi on testattu .NET 6: lla, mutta mielestäni sitä voidaan käyttää .NET Frameworkissa samalla tavalla. Se toimii .NET: ssä, mutta Type.GetTypeFromProgID muista, että menetelmät ja menetelmät ovat vain Windows-koodia eivätkä System.Runtime.InteropServices.Marshal.ReleaseComObject toimi muilla alustoilla.