.NET में स्थापित Excel के आंतरिक संस्करण की जाँच करें

पेज अद्यतन :
पेज निर्माण की तारीख :

ऑपरेटिंग वातावरण

Visual Studio
  • Visual Studio 2022
।जाल
  • .NET 6.0
विंडोज़
  • विंडोज 11
श्रेष्ठ होना
  • माइक्रोसॉफ्ट 365

आवश्यकताएँ

विंडोज़
  • संस्करणों में से एक
श्रेष्ठ होना
  • संस्करणों में से एक

आंतरिक संस्करणों के बारे में

इस बार, आप Excel के आंतरिक संस्करण को प्रोग्रामेटिक रूप से जाँच सकते हैं, लेकिन 2023/05/07 तक, Excel 2016 और बाद के संस्करण का आंतरिक संस्करण 16.0 से नहीं बदला है. परिणामस्वरूप, Excel 2016, 2019, 2021, और Microsoft 265 को उनके आंतरिक संस्करणों द्वारा पहचानना अब संभव नहीं है. हालांकि, चूंकि आंतरिक संस्करण नहीं बदला है, इसलिए लाभ यह है कि जब तक एक नया संस्करण नहीं आता है, तब तक एक्सेल लाइब्रेरी का उपयोग 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 प्रत्यक्ष उदाहरण उत्पन्न नहीं करने का कारण एक्सेल लाइब्रेरी के संस्करण को सीधे संदर्भित करके उस पर भरोसा करने से बचना है। ऐसा करने से आप लेटेस्ट वर्जन देख पाएंगे।

फिर आप जेनरेट किए गए application इंस्टेंस से गुणों को Version संदर्भित कर सकते हैं और संस्करण प्राप्त कर सकते हैं। पुनर्प्राप्त किया गया संस्करण वह संस्करण है जो Excel के पास आंतरिक रूप से है. उदाहरण के लिए, Excel 2010 14.0 है, Excel 2013 15.0 है, और Excel 2016 और बाद के संस्करण 16.0 हैं।

ध्यान दें कि यह प्रक्रिया वास्तव में एक्सेल शुरू करने से अलग नहीं है, इसलिए यदि आप विधि को कॉल नहीं करते हैं और Excel.Application रिलीज़ करते हैं, System.Runtime.InteropServices.Marshal.ReleaseComObject तो एक्सेल प्रक्रिया बनी रहेगी।

वैसे, इस कोड का परीक्षण .NET 6 पर किया गया है, लेकिन मुझे लगता है कि इसका उपयोग .NET Framework में उसी तरह से किया जा सकता है। यह .NET में काम करता है, लेकिन Type.GetTypeFromProgID ध्यान रखें कि विधियां और विधियां विंडोज-केवल कोड हैं और System.Runtime.InteropServices.Marshal.ReleaseComObject अन्य प्लेटफार्मों पर काम नहीं करेंगी।