Überprüfen Sie die interne Version von Excel, die in .NET installiert ist.
Betriebsumgebung
- Visual Studio
-
- Visual Studio 2022
- .NETTO
-
- .NET 6.0
- Fenster
-
- Windows 11
- Ausstechen
-
- Microsoft 365
Voraussetzungen
- Fenster
-
- Eine der Versionen
- Ausstechen
-
- Eine der Versionen
Informationen zu internen Versionen
Dieses Mal können Sie die interne Version von Excel programmgesteuert überprüfen, aber ab dem 07.05.2023 hat sich die interne Version von Excel 2016 und höher gegenüber 16.0 nicht geändert. Dadurch ist es nicht mehr möglich, Excel 2016, 2019, 2021 und Microsoft 265 anhand ihrer internen Versionen zu identifizieren. Da sich die interne Version jedoch nicht geändert hat, ist der Vorteil, dass die Excel-Bibliothek seit 2016 gemeinsam genutzt werden kann, solange keine neue Version herauskommt.
Über das Betriebsprogramm
Mit dem folgenden Code können Sie herausfinden, welche interne Version von Excel installiert ist: Da es sich um eine Methode handelt, ist es möglich, sie so in Ihr eigenes Programm zu bringen, wie sie ist.
GetInstallExcelVersion
Wenn Sie die Methode aufrufen, wird die Version als Zahl zurückgegeben.
<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);
}
}
}
Eine einfache Erklärung des Programms besteht darin, die Methode zu verwenden, um den Typ derType.GetTypeFromProgID
Programm-ID zu Excel.Application
erhalten.
Activator.CreateInstance
Die Methode erstellt eine Excel.Application
Instanz von .
Excel.Application
Der Grund dafür, dass keine direkte Instanz von generiert wird, besteht darin, dass Sie sich nicht auf die Version der Excel-Bibliothek verlassen müssen, indem Sie direkt darauf verweisen.
Auf diese Weise können Sie die neueste Version sehen.
Sie können dann auf Version
die Eigenschaften der generierten application
Instanz verweisen und die Version abrufen.
Die abgerufene Version ist die Version, über die Excel intern verfügt. Excel 2010 ist z. B. 14.0, Excel 2013 15.0 und Excel 2016 und höher 16.0.
Beachten Sie, dass sich dieser Prozess nicht vom tatsächlichen Starten von Excel unterscheidet, d. h., wenn Sie die Methode nicht aufrufen und Excel.Application
freigeben, System.Runtime.InteropServices.Marshal.ReleaseComObject
bleibt der Excel-Prozess erhalten.
Übrigens wurde dieser Code auf .NET 6 getestet, aber ich denke, dass er in .NET Framework auf die gleiche Weise verwendet werden kann.
Es funktioniert in .NET, aber Type.GetTypeFromProgID
denken Sie daran, dass es sich bei den Methoden und Methoden um reinen Windows-Code handelt, System.Runtime.InteropServices.Marshal.ReleaseComObject
der auf anderen Plattformen nicht funktioniert.