.NET میں انسٹال ایکسل کا اندرونی ورژن چیک کریں

جب صفحے کی تازہ کاری :
صفحہ تخلیق تاریخ :

آپریٹنگ ماحول

Visual Studio
  • Visual Studio 2022
.جال
  • .NET 6.0
Windows
  • ونڈوز 11
Excel
  • Microsoft 365

ضروری شرائط

Windows
  • ورژن میں سے ایک
Excel
  • ورژن میں سے ایک

اندرونی ورژن کے بارے میں

اس بار ، آپ ایکسل کے اندرونی ورژن کو پروگرامی طور پر چیک کرسکتے ہیں ، لیکن 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);
    }
  }
}

پروگرام کی ایک سادہ وضاحت یہ ہے کہ پروگرام آئی ڈی کی قسم حاصل کرنے کےType.GetTypeFromProgID لئے طریقہ استعمال کریں Excel.Application ، Activator.CreateInstance یہ طریقہ ایک Excel.Application مثال تخلیق کرتا ہے. Excel.Application براہ راست مثال پیدا نہ کرنے کی وجہ یہ ہے کہ ایکسل لائبریری کے ورژن پر براہ راست حوالہ دے کر اس پر انحصار کرنے سے گریز کریں۔ ایسا کرنے سے آپ تازہ ترین ورژن دیکھ سکیں گے۔

اس کے Version بعد آپ تخلیق کردہ application مثال سے خصوصیات کا حوالہ دے سکتے ہیں اور ورژن حاصل کرسکتے ہیں۔ بازیافت شدہ ورژن وہ ورژن ہے جو ایکسل کے پاس اندرونی طور پر ہے۔ مثال کے طور پر ، ایکسل 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 دوسرے پلیٹ فارمز پر کام نہیں کریں گے۔