בדוק את הגירסה הפנימית של Excel המותקנת ב- .NET
סביבת הפעלה
- Visual Studio
-
- 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 על-ידי הפניה ישירה אליה.
על ידי ביצוע פעולה זו, תוכל לראות את הגרסה העדכנית ביותר.
לאחר מכן תוכל להפנות למאפיינים 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
יפעלו בפלטפורמות אחרות.