Verifique la versión interna de Excel instalada en .NET
Entorno operativo
- Visual Studio
-
- Visual Studio 2022
- .RED
-
- .NET 6.0
- Windows
-
- Windows 11
- Sobresalir
-
- Microsoft 365
Prerrequisitos
- Windows
-
- Una de las versiones
- Sobresalir
-
- Una de las versiones
Acerca de las versiones internas
Esta vez, puede verificar la versión interna de Excel mediante programación, pero a partir del 07/05/2023, la versión interna de Excel 2016 y posteriores no ha cambiado desde la 16.0. Como resultado, ya no es posible identificar Excel 2016, 2019, 2021 y Microsoft 265 por sus versiones internas. Sin embargo, dado que la versión interna no ha cambiado, la ventaja es que mientras no salga una nueva versión, la biblioteca de Excel se puede usar en común desde 2016.
Sobre el programa operativo
Puede averiguar qué versión interna de Excel está instalada con el siguiente código: Dado que es un método, es posible llevarlo a su propio programa tal como está.
GetInstallExcelVersion
Si llama al método, la versión se devolverá como un 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ón simple del programa es usar el método para Excel.Application
obtener el tipo de ID delType.GetTypeFromProgID
programa,
Activator.CreateInstance
El método crea una Excel.Application
instancia de .
Excel.Application
La razón para no generar una instancia directa de es evitar depender de la versión de la biblioteca de Excel haciendo referencia a ella directamente.
Al hacer esto, podrá ver la última versión.
A Version
continuación, puede consultar las propiedades de la instancia generada application
y obtener la versión.
La versión que se recupera es la versión que Excel tiene internamente. Por ejemplo, Excel 2010 es 14.0, Excel 2013 es 15.0 y Excel 2016 y versiones posteriores son 16.0.
Tenga en cuenta que este proceso no es diferente de iniciar Excel, por lo que si no llama al método y Excel.Application
lo libera, System.Runtime.InteropServices.Marshal.ReleaseComObject
el proceso de Excel permanecerá.
Por cierto, este código se ha probado en .NET 6, pero creo que se puede usar en .NET Framework de la misma manera.
Funciona en .NET, pero Type.GetTypeFromProgID
tenga en cuenta que los métodos y métodos son código solo de Windows y System.Runtime.InteropServices.Marshal.ReleaseComObject
no funcionarán en otras plataformas.