Проверка на вътрешната версия на Excel, инсталирана в .NET
Работна среда
- Визуално студио
-
- Визуално студио 2022
- .НЕТЕН
-
- .НЕТ 6.0
- Уиндоус
-
- Прозорци 11
- Превъзхождам
-
- Майкрософт 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
програмата ID,
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
няма да работят на други платформи.