Verifique a versão interna do Excel instalada no .NET
Ambiente operacional
- Estúdio Visual
-
- Visual Studio 2022
- .REDE
-
- .NET 6.0
- Windows
-
- Janelas 11
- Distinguir-se
-
- Microsoft 365
Pré-requisitos
- Windows
-
- Uma das versões
- Distinguir-se
-
- Uma das versões
Sobre versões internas
Desta vez, você pode verificar a versão interna do Excel programaticamente, mas a partir de 2023/05/07, a versão interna do Excel 2016 e posterior não mudou de 16.0. Como resultado, não é mais possível identificar o Excel 2016, 2019, 2021 e Microsoft 265 por suas versões internas. No entanto, como a versão interna não mudou, a vantagem é que, desde que uma nova versão não saia, a biblioteca do Excel pode ser usada em comum desde 2016.
Sobre o programa operacional
Você pode descobrir qual versão interna do Excel está instalada com o seguinte código: Como é um método, é possível trazê-lo para o seu próprio programa como ele é.
GetInstallExcelVersion
Se você chamar o método, a versão será retornada como um 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);
}
}
}
Uma explicação simples do programa é usar o método para Excel.Application
obter o tipo de ID doType.GetTypeFromProgID
programa,
Activator.CreateInstance
O método cria uma Excel.Application
instância de .
Excel.Application
A razão para não gerar uma instância direta de é evitar confiar na versão da biblioteca do Excel referenciando-a diretamente.
Ao fazer isso, você será capaz de ver a versão mais recente.
Em seguida, você pode consultar Version
as propriedades da instância gerada application
e obter a versão.
A versão recuperada é a versão que o Excel tem internamente. Por exemplo, o Excel 2010 é 14.0, o Excel 2013 é 15.0 e o Excel 2016 e posterior são 16.0.
Observe que esse processo não é diferente de realmente iniciar o Excel, portanto, se você não chamar o método e Excel.Application
liberar, System.Runtime.InteropServices.Marshal.ReleaseComObject
o processo do Excel permanecerá.
A propósito, esse código foi testado no .NET 6, mas acho que ele pode ser usado no .NET Framework da mesma maneira.
Ele funciona no .NET, mas Type.GetTypeFromProgID
tenha em mente que os métodos e métodos são código somente do Windows e System.Runtime.InteropServices.Marshal.ReleaseComObject
não funcionarão em outras plataformas.