تحقق من الإصدار الداخلي من Excel المثبت في .NET

تحديث الصفحة :
تاريخ إنشاء الصفحة :

بيئة التشغيل

فيجوال ستوديو
  • فيجوال ستوديو 2022
.صافي
  • .NET 6.0
نوافذ
  • ويندوز ١١
اكسل
  • مايكروسوفت 365

المتطلبات المسبقه

نوافذ
  • أحد الإصدارات
اكسل
  • أحد الإصدارات

حول الإصدارات الداخلية

هذه المرة ، يمكنك التحقق من الإصدار الداخلي من Excel برمجيا ، ولكن اعتبارا من 2023/05/07 ، لم يتغير الإصدار الداخلي من Excel 2016 والإصدارات الأحدث من 16.0. نتيجة لذلك ، لم يعد من الممكن تحديد Excel 2016 و 2019 و 2021 و Microsoft 265 من خلال إصداراتها الداخلية. ومع ذلك ، نظرا لأن الإصدار الداخلي لم يتغير ، فإن الميزة هي أنه طالما لم يتم إصدار إصدار جديد ، يمكن استخدام مكتبة Excel بشكل مشترك منذ عام 2016.

حول برنامج التشغيل

يمكنك معرفة الإصدار الداخلي من Excel المثبت باستخدام التعليمة البرمجية التالية: نظرا لأنها طريقة ، فمن الممكن إحضارها إلى برنامجك الخاص كما هي. 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 سبب عدم إنشاء مثيل مباشر هو تجنب الاعتماد على إصدار مكتبة Excel بالرجوع إليه مباشرة. من خلال القيام بذلك ، ستتمكن من رؤية أحدث إصدار.

يمكنك بعد ذلك الرجوع إلى Version الخصائص من المثيل الذي تم إنشاؤه application والحصول على الإصدار. الإصدار الذي يتم استرداده هو الإصدار الذي يمتلكه Excel داخليا. على سبيل المثال، Excel 2010 هو 14.0، وExcel 2013 هو 15.0، وExcel 2016 والإصدارات الأحدث هي 16.0.

لاحظ أن هذه العملية لا تختلف عن بدء تشغيل Excel فعليا ، لذلك إذا لم تقم باستدعاء الطريقة والإصدار Excel.Application ، System.Runtime.InteropServices.Marshal.ReleaseComObject فستظل عملية Excel.

بالمناسبة ، تم اختبار هذا الرمز على .NET 6 ، لكنني أعتقد أنه يمكن استخدامه في .NET Framework بنفس الطريقة تقريبا. إنه يعمل في .NET ، ولكن Type.GetTypeFromProgID ضع في اعتبارك أن الأساليب والأساليب هي رمز Windows فقط ولن System.Runtime.InteropServices.Marshal.ReleaseComObject تعمل على الأنظمة الأساسية الأخرى.