Kontroller den interne version af Excel, der er installeret i .NET
Driftsmiljø
- Visual Studio
-
- Visual Studio 2022
- .NET
-
- .NET 6.0
- Windows
-
- Windows 11
- Excel
-
- Microsoft 365
Forudsætninger
- Windows
-
- En af versionerne
- Excel
-
- En af versionerne
Om interne versioner
Denne gang kan du kontrollere den interne version af Excel programmatisk, men fra 2023/05/07 er den interne version af Excel 2016 og nyere ikke ændret fra 16.0. Som et resultat er det ikke længere muligt at identificere Excel 2016, 2019, 2021 og Microsoft 265 ved deres interne versioner. Men da den interne version ikke er ændret, er fordelen, at så længe en ny version ikke kommer ud, kan Excel-biblioteket bruges til fælles siden 2016.
Om driftsprogrammet
Du kan finde ud af, hvilken intern version af Excel der er installeret med følgende kode: Da det er en metode, er det muligt at bringe det til dit eget program, som det er.
GetInstallExcelVersion
Hvis du kalder metoden, returneres versionen som et nummer.
<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);
}
}
}
En simpel forklaring af programmet er at bruge metoden til at Excel.Application
få typen afType.GetTypeFromProgID
program-id,
Activator.CreateInstance
Metoden opretter en Excel.Application
forekomst af .
Excel.Application
Årsagen til ikke at generere en direkte forekomst af er at undgå at stole på versionen af Excel-biblioteket ved at henvise direkte til den.
Ved at gøre dette vil du kunne se den nyeste version.
Du kan derefter henvise til Version
egenskaberne fra den genererede application
forekomst og hente versionen.
Den version, der hentes, er den version, som Excel har internt. Excel 2010 er f.eks. 14.0, Excel 2013 er 15.0, og Excel 2016 og nyere er 16.0.
Bemærk, at denne proces ikke adskiller sig fra faktisk at starte Excel, så hvis du ikke kalder metoden og Excel.Application
frigiver , System.Runtime.InteropServices.Marshal.ReleaseComObject
forbliver Excel-processen.
Forresten er denne kode blevet testet på .NET 6, men jeg tror, den kan bruges i .NET Framework på stort set samme måde.
Det fungerer i .NET, men Type.GetTypeFromProgID
husk, at metoderne og metoderne kun er Windows-kode og System.Runtime.InteropServices.Marshal.ReleaseComObject
ikke fungerer på andre platforme.