Controleer de interne versie van Excel die is geïnstalleerd in .NET
Werkomgeving
- Visual Studio
-
- Visual Studio 2022
- .NET
-
- .NET 6.0
- Ramen
-
- Vensters 11
- Uitblinken
-
- Microsoft 365
Voorwaarden
- Ramen
-
- Een van de versies
- Uitblinken
-
- Een van de versies
Informatie over interne versies
Deze keer kunt u de interne versie van Excel programmatisch controleren, maar vanaf 2023/05/07 is de interne versie van Excel 2016 en later niet gewijzigd ten opzichte van 16.0. Als gevolg hiervan is het niet langer mogelijk om Excel 2016, 2019, 2021 en Microsoft 265 te identificeren aan de hand van hun interne versies. Aangezien de interne versie echter niet is gewijzigd, is het voordeel dat zolang er geen nieuwe versie uitkomt, de Excel-bibliotheek sinds 2016 gemeenschappelijk kan worden gebruikt.
Over het besturingsprogramma
U kunt achterhalen welke interne versie van Excel is geïnstalleerd met de volgende code: Omdat het een methode is, is het mogelijk om het naar je eigen programma te brengen zoals het is.
GetInstallExcelVersion
Als u de methode aanroept, wordt de versie geretourneerd als een 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);
}
}
}
Een eenvoudige uitleg van het programma is om de methode te gebruiken om het typeType.GetTypeFromProgID
programma-ID te Excel.Application
krijgen,
Activator.CreateInstance
De methode maakt een Excel.Application
instantie van .
Excel.Application
De reden voor het niet genereren van een direct exemplaar van is om te voorkomen dat u afhankelijk bent van de versie van de Excel-bibliotheek door er rechtstreeks naar te verwijzen.
Door dit te doen, kunt u de nieuwste versie zien.
U kunt dan verwijzen naar Version
de eigenschappen van de gegenereerde application
instantie en de versie ophalen.
De versie die wordt opgehaald is de versie die Excel intern heeft. Excel 2010 is bijvoorbeeld 14,0, Excel 2013 is 15,0 en Excel 2016 en hoger zijn 16,0.
Merk op dat dit proces niet anders is dan het daadwerkelijk starten van Excel, dus als u de methode en Excel.Application
release niet aanroept, System.Runtime.InteropServices.Marshal.ReleaseComObject
blijft het Excel-proces bestaan.
Trouwens, deze code is getest op .NET 6, maar ik denk dat het op vrijwel dezelfde manier in het .NET Framework kan worden gebruikt.
Het werkt in .NET, maar Type.GetTypeFromProgID
houd er rekening mee dat de methoden en methoden alleen Windows-code zijn en System.Runtime.InteropServices.Marshal.ReleaseComObject
niet werken op andere platforms.