Patikrinkite vidinę "Excel" versiją, įdiegtą .NET
Darbo aplinka
- Vizualinė studija
-
- "Visual Studio 2022"
- .GRYNOJI
-
- .NET 6.0
- Windows
-
- Langai 11
- Excel
-
- "Microsoft 365"
Būtinosios sąlygos
- Windows
-
- Viena iš versijų
- Excel
-
- Viena iš versijų
Apie vidines versijas
Šį kartą vidinę "Excel" versiją galite patikrinti programiškai, tačiau nuo 2023/05/07 vidinė "Excel 2016" ir naujesnė versija nepasikeitė nuo 16.0. Todėl nebeįmanoma identifikuoti "Excel 2016", "2019", "2021" ir "Microsoft 265" pagal jų vidines versijas. Tačiau, kadangi vidinė versija nepasikeitė, privalumas yra tas, kad tol, kol neišeina nauja versija, "Excel" biblioteka gali būti naudojama bendrai nuo 2016 m.
Apie operacinę programą
Galite sužinoti, kuri vidinė "Excel" versija įdiegta naudojant šį kodą: Kadangi tai yra metodas, galima jį perkelti į savo programą tokią, kokia ji yra.
GetInstallExcelVersion
Jei paskambinsite šiuo metodu, versija bus grąžinta kaip numeris.
<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);
}
}
}
Paprastas programos paaiškinimas yra naudoti metodą, kad Excel.Application
gautumėte programos ID tipąType.GetTypeFromProgID
,
Activator.CreateInstance
Metodas sukuria Excel.Application
.
Excel.Application
Tiesioginio egzemplioriaus negeneravimo priežastis yra išvengti pasitikėjimo "Excel" bibliotekos versija, nurodant ją tiesiogiai.
Tai darydami galėsite pamatyti naujausią versiją.
Tada galite peržiūrėti Version
sugeneruoto application
egzemplioriaus ypatybes ir gauti versiją.
Nuskaityta versija yra ta, kurią programa "Excel" turi viduje. Pavyzdžiui, "Excel 2010" yra 14,0, "Excel 2013" yra 15,0, o "Excel 2016" ir naujesnės versijos yra 16,0.
Atkreipkite dėmesį, kad šis procesas nesiskiria nuo "Excel" paleidimo, taigi, jei neiškviesite metodo ir Excel.Application
išleisite , System.Runtime.InteropServices.Marshal.ReleaseComObject
"Excel" procesas išliks.
Beje, šis kodas buvo išbandytas .NET 6, bet manau, kad jis gali būti naudojamas .NET Framework panašiai.
Jis veikia .NET, tačiau Type.GetTypeFromProgID
atminkite, kad metodai ir metodai yra tik "Windows" kodas ir System.Runtime.InteropServices.Marshal.ReleaseComObject
neveiks kitose platformose.