Ελέγξτε την εσωτερική έκδοση του 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
δεν θα λειτουργήσουν σε άλλες πλατφόρμες.