Verificați versiunea internă de Excel instalată în .NET
Mediu de operare
- Visual Studio
-
- Visual Studio 2022
- .NET
-
- .NET 6.0
- Windows
-
- Ferestre 11
- Excela
-
- Microsoft 365
Cerințe preliminare
- Windows
-
- Una dintre versiuni
- Excela
-
- Una dintre versiuni
Despre versiunile interne
De data aceasta, puteți verifica versiunea internă a Excel programatic, dar începând cu 07.05.2023, versiunea internă a Excel 2016 și versiunile ulterioare nu s-a modificat de la 16.0. Ca urmare, nu mai este posibil să identificați Excel 2016, 2019, 2021 și Microsoft 265 după versiunile lor interne. Cu toate acestea, deoarece versiunea internă nu s-a schimbat, avantajul este că, atâta timp cât nu apare o nouă versiune, biblioteca Excel poate fi utilizată în comun din 2016.
Despre programul de operare
Puteți afla ce versiune internă de Excel este instalată cu următorul cod: Deoarece este o metodă, este posibil să o aduceți în propriul program așa cum este.
GetInstallExcelVersion
Dacă apelați metoda, versiunea va fi returnată ca număr.
<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);
}
}
}
O explicație simplă a programului este utilizarea metodei pentru a Excel.Application
obține tipul de ID alType.GetTypeFromProgID
programului,
Activator.CreateInstance
Metoda creează o Excel.Application
instanță de .
Excel.Application
Motivul pentru care nu generați o instanță directă este să evitați să vă bazați pe versiunea bibliotecii Excel referindu-se direct la aceasta.
Procedând astfel, veți putea vedea cea mai recentă versiune.
Apoi puteți consulta Version
proprietățile din instanța generată application
și puteți obține versiunea.
Versiunea regăsită este versiunea pe care Excel o are intern. De exemplu, Excel 2010 este 14.0, Excel 2013 este 15.0 și Excel 2016 și versiunile ulterioare sunt 16.0.
Rețineți că acest proces nu este diferit de pornirea efectivă a Excel, deci dacă nu apelați metoda și Excel.Application
eliberați , System.Runtime.InteropServices.Marshal.ReleaseComObject
procesul Excel va rămâne.
Apropo, acest cod a fost testat pe .NET 6, dar cred că poate fi folosit în .NET Framework în același mod.
Funcționează în .NET, dar Type.GetTypeFromProgID
rețineți că metodele și metodele sunt cod numai pentru Windows și System.Runtime.InteropServices.Marshal.ReleaseComObject
nu vor funcționa pe alte platforme.