Zkontrolujte interní verzi Excelu nainstalovanou v .NET
Provozní prostředí
- Visual Studio
-
- Visual Studio 2022
- .SÍŤ
-
- .NET 6.0
- Windows
-
- Systém Windows 11
- Vynikat
-
- Microsoft 365
Požadavky
- Windows
-
- Jedna z verzí
- Vynikat
-
- Jedna z verzí
O interních verzích
Tentokrát můžete interní verzi Excelu zkontrolovat programově, ale od 7. 5. 2023 se interní verze Excelu 2016 a novější od 16.0 nezměnila. V důsledku toho již není možné identifikovat Excel 2016, 2019, 2021 a Microsoft 265 podle jejich interních verzí. Vzhledem k tomu, že se však interní verze nezměnila, je výhodou, že dokud nevyjde nová verze, lze knihovnu Excel běžně používat od roku 2016.
O operačním programu
Pomocí následujícího kódu můžete zjistit, která interní verze Excelu je nainstalována: Vzhledem k tomu, že se jedná o metodu, je možné ji přenést do vlastního programu tak, jak je.
GetInstallExcelVersion
Pokud zavoláte metodu, verze se vrátí jako číslo.
<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);
}
}
}
Jednoduchým vysvětlením programu je použití metody k Excel.Application
získání typuType.GetTypeFromProgID
ID programu,
Activator.CreateInstance
Metoda vytvoří Excel.Application
instanci .
Excel.Application
Důvodem, proč negenerovat přímou instanci, je vyhnout se spoléhání se na verzi knihovny aplikace Excel tím, že na ni přímo odkazujete.
Tímto způsobem budete moci vidět nejnovější verzi.
Pak můžete odkazovat na Version
vlastnosti z vygenerované application
instance a získat verzi.
Načtená verze je verze, kterou má Excel interně. Například Excel 2010 je 14.0, Excel 2013 je 15.0 a Excel 2016 a novější je 16.0.
Všimněte si, že tento proces se neliší od skutečného spuštění Excelu, takže pokud metodu nezavoláte a Excel.Application
neuvolníte, System.Runtime.InteropServices.Marshal.ReleaseComObject
proces Excel zůstane.
Mimochodem, tento kód byl testován na .NET 6, ale myslím, že jej lze použít v .NET Frameworku v podstatě stejným způsobem.
Funguje v .NET, ale Type.GetTypeFromProgID
mějte na paměti, že metody a metody jsou pouze kód pro Windows a System.Runtime.InteropServices.Marshal.ReleaseComObject
nebudou fungovat na jiných platformách.