Перевірте внутрішню версію Excel, встановлену в .NET
Робоче середовище
- Візуальна студія
-
- Visual Studio 2022
- .МЕРЕЖІ
-
- .NET 6.0
- Вікна
-
- Вікна 11
- Excel
-
- Microsoft 365
Передумови
- Вікна
-
- Одна з версій
- Excel
-
- Одна з версій
Про внутрішні версії
Цього разу ви можете перевірити внутрішню версію Excel програмним шляхом, але станом на 07.05.2023 внутрішня версія 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
не працюватимуть на інших платформах.