بررسی نسخه داخلی اکسل نصب شده در .NET

صفحه به روز شده :
تاریخ ایجاد صفحه :

محیط عملیاتی

ویژوال استودیو
  • ویژوال استودیو 2022
.خالص
  • دات نت 6.0
ویندوز
  • ویندوز 11
اکسل
  • مایکروسافت 365

پیش نیازها

ویندوز
  • یکی از نسخه های
اکسل
  • یکی از نسخه های

درباره نسخه های داخلی

این بار، شما می توانید نسخه داخلی اکسل را به صورت برنامه ای بررسی کنید، اما از سال 2023/05/07، نسخه داخلی اکسل 2016 و بعد از ان از 16.0 تغییر نکرده است. در نتیجه، دیگر نمی توان اکسل 2016، 2019، 2021 و مایکروسافت 265 را با نسخه های داخلی خود شناسایی کرد. با این حال، از انجا که نسخه داخلی تغییر نکرده است، مزیت این است که تا زمانی که نسخه جدید منتشر نشود، کتابخانه اکسل می تواند از سال 2016 به طور مشترک استفاده شود.

درباره برنامه عملیاتی

شما می توانید دریابید که نسخه داخلی اکسل با کد زیر نصب شده است: از انجا که این یک روش است، می توان ان را به برنامه خود را به عنوان ان است. GetInstallExcelVersion اگر با روش تماس بگیرید، نسخه به عنوان یک شماره بازگردانده می شود.

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

یک توضیح ساده از برنامه این است که از روش برای Excel.Application دریافت نوعType.GetTypeFromProgID شناسه برنامه استفاده کنید. Activator.CreateInstance این روش یک نمونه از موارد Excel.Application زیر را ایجاد می کند. Excel.Application دلیل عدم تولید یک نمونه مستقیم از این است که از تکیه بر نسخه کتابخانه اکسل با مراجعه مستقیم به ان خودداری کنید. با انجام این کار، شما قادر خواهید بود اخرین نسخه را ببینید.

سپس می توانید به Version ویژگی های نمونه تولید شده مراجعه کنید application و نسخه را دریافت کنید. نسخه ای که بازیابی می شود نسخه ای است که Excel در داخل دارد. به عنوان مثال، اکسل 2010 14.0، اکسل 2013 15.0 و اکسل 2016 و بعد از ان 16.0 است.

توجه داشته باشید که این فرایند هیچ تفاوتی با شروع واقعی اکسل ندارد، بنابراین اگر روش را فراخوانی نکنید و Excel.Application ازاد نکنید، System.Runtime.InteropServices.Marshal.ReleaseComObject فرایند اکسل باقی خواهد ماند.

به هر حال، این کد بر روی .NET 6 ازمایش شده است، اما من فکر می کنم می توان ان را در چارچوب دات نت به همان شیوه استفاده کرد. این در .NET کار می کند، اما Type.GetTypeFromProgID به خاطر داشته باشید که روش ها و روش ها فقط کد ویندوز هستند و System.Runtime.InteropServices.Marshal.ReleaseComObject در سیستم عامل های دیگر کار نمی کنند.