Comprova la versió interna d'Excel instal·lada en .NET
Entorn operatiu
- Estudi visual
-
- Estudi visual 2022
- .XARXA
-
- .NET 6.0
- Windows
-
- Finestres 11
- Excel·lir
-
- Microsoft 365
Prerequisits
- Windows
-
- Una de les versions
- Excel·lir
-
- Una de les versions
Quant a les versions internes
Aquesta vegada, podeu comprovar la versió interna d'Excel mitjançant programació, però a partir del 2023/05/07, la versió interna d'Excel 2016 i posteriors no ha canviat de 16.0. Com a resultat, ja no és possible identificar Excel 2016, 2019, 2021 i Microsoft 265 per les seves versions internes. Tanmateix, com que la versió interna no ha canviat, l'avantatge és que mentre no surti una nova versió, la biblioteca Excel es pot utilitzar en comú des del 2016.
Sobre el programa operatiu
Podeu esbrinar quina versió interna d'Excel està instal·lada amb el codi següent: Com que és un mètode, és possible portar-lo al vostre propi programa tal com és.
GetInstallExcelVersion
Si truqueu al mètode, la versió es retornarà com a número.
<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);
}
}
}
Una explicació senzilla del programa és utilitzar el mètode per Excel.Application
obtenir el tipus d'ID delType.GetTypeFromProgID
programa,
Activator.CreateInstance
El mètode crea una Excel.Application
instància de .
Excel.Application
La raó per no generar una instància directa de és evitar confiar en la versió de la biblioteca d'Excel referenciant-la directament.
En fer-ho, podreu veure la versió més recent.
A continuació, podeu fer referència a Version
les propietats de la instància generada application
i obtenir la versió.
La versió que es recupera és la versió que té Excel internament. Per exemple, Excel 2010 és 14.0, Excel 2013 és 15.0 i Excel 2016 i posteriors són 16.0.
Tingueu en compte que aquest procés no és diferent d'iniciar realment Excel, de manera que si no truqueu al mètode i Excel.Application
deixeu anar, System.Runtime.InteropServices.Marshal.ReleaseComObject
el procés d'Excel romandrà.
Per cert, aquest codi s'ha provat a .NET 6, però crec que es pot utilitzar al .NET Framework de la mateixa manera.
Funciona en .NET, però Type.GetTypeFromProgID
tingueu en compte que els mètodes i mètodes són només de Windows i System.Runtime.InteropServices.Marshal.ReleaseComObject
no funcionaran en altres plataformes.