NET'te yüklü olan Excel'in iç sürümünü denetleyin

Sayfa güncel :
Sayfa oluşturma tarihi :

Çalışma ortamı

Visual Studio
  • Visual Studio 2022
.NET
  • .NET 6.0
Windows
  • pencereler 11
Excel
  • Microsoft 365 (İngilizce)

Önkoşullar

Windows
  • Sürümlerden biri
Excel
  • Sürümlerden biri

Dahili Sürümler Hakkında

Bu sefer Excel'in dahili sürümünü programlı olarak kontrol edebilirsiniz, ancak 2023/05/07 itibariyle Excel 2016 ve sonraki sürümlerin dahili sürümü 16.0'dan değişmedi. Sonuç olarak, Excel 2016, 2019, 2021 ve Microsoft 265'i dahili sürümleriyle tanımlamak artık mümkün değildir. Ancak dahili sürüm değişmediği için avantajı yeni bir sürüm çıkmadığı sürece Excel kütüphanesinin 2016'dan beri ortak olarak kullanılabilmesidir.

İşletim programı hakkında

Excel'in hangi dahili sürümünün yüklü olduğunu aşağıdaki kodla öğrenebilirsiniz: Bir yöntem olduğu için kendi programınıza olduğu gibi getirmeniz mümkündür. GetInstallExcelVersion Yöntemi çağırırsanız, sürüm bir numara olarak döndürülür.

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

Programın basit bir açıklaması, program kimliğinin türünüType.GetTypeFromProgID almak için Excel.Application yöntemi kullanmaktır. Activator.CreateInstance Yöntemi, bir örneğini oluşturur Excel.Application . Excel.Application Doğrudan bir örnek oluşturmamanın nedeni, Excel kitaplığının sürümüne doğrudan başvurarak güvenmekten kaçınmaktır. Bunu yaparak, en son sürümü görebileceksiniz.

Daha sonra oluşturulan application örnekten özelliklere başvurabilir Version ve sürümü alabilirsiniz. Alınan sürüm, Excel'in dahili olarak sahip olduğu sürümdür. Örneğin, Excel 2010 14.0, Excel 2013 15.0 ve Excel 2016 ve sonraki sürümleri 16.0'dır.

Bu işlemin Excel'i gerçekten başlatmaktan farklı olmadığını unutmayın, bu nedenle yöntemi çağırmazsanız ve Excel.Application serbest bırakmazsanız, System.Runtime.InteropServices.Marshal.ReleaseComObject Excel işlemi kalacaktır.

Bu arada, bu kod .NET 6'da test edildi, ancak .NET Framework'te de aynı şekilde kullanılabileceğini düşünüyorum. NET'te çalışır, ancak Type.GetTypeFromProgID yöntemlerin ve yöntemlerin yalnızca Windows kodu olduğunu ve System.Runtime.InteropServices.Marshal.ReleaseComObject diğer platformlarda çalışmayacağını unutmayın.