Ελέγξτε την εσωτερική έκδοση του Excel που είναι εγκατεστημένη στο .NET

Σελίδα ενημέρωση :
Ημερομηνία δημιουργίας σελίδας :

Περιβάλλον λειτουργίας

Οπτικό στούντιο
  • Visual Studio 2022
.ΔΊΧΤΥ
  • .NET 6.0
παράθυρα
  • Παράθυρα 11
Αριστεύω
  • Το Microsoft 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 αναφέροντας την απευθείας. Με αυτόν τον τρόπο, θα μπορείτε να δείτε την πιο πρόσφατη έκδοση.

Στη συνέχεια, μπορείτε να ανατρέξετε στις ιδιότητες από την παρουσία που δημιουργήθηκε application και να Version λάβετε την έκδοση. Η έκδοση που ανακτάται είναι η έκδοση που έχει εσωτερικά το 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 δεν θα λειτουργήσουν σε άλλες πλατφόρμες.