Preverite notranjo različico Excela, nameščeno v ogrodju .NET
Delovno okolje
- Visual Studio
-
- Visual Studio 2022
- .MREŽA
-
- .NET 6.0
- Windows
-
- Windows 11
- Excel
-
- Microsoft 365
Predpogoji
- Windows
-
- Ena od različic
- Excel
-
- Ena od različic
O notranjih različicah
Tokrat lahko programsko preverite notranjo različico Excela, vendar se od 2023/05/07 notranja različica Excela 2016 in novejših ni spremenila iz 16.0. Zato ni več mogoče prepoznati Excela 2016, 2019, 2021 in Microsoft 265 po njihovih notranjih različicah. Ker pa se notranja različica ni spremenila, je prednost v tem, da dokler ne izide nova različica, se lahko knjižnica Excel uporablja skupno od leta 2016.
O operacijskem programu
Ugotovite, katera notranja različica Excela je nameščena s to kodo: Ker gre za metodo, jo je mogoče prenesti v svoj program, kot je.
GetInstallExcelVersion
Če pokličete metodo, bo različica vrnjena kot številka.
<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);
}
}
}
Preprosta razlaga programa je uporaba metode za Excel.Application
pridobitev vrste ID-jaType.GetTypeFromProgID
programa,
Activator.CreateInstance
Metoda ustvari primerek Excel.Application
.
Excel.Application
Razlog za to, da ne ustvarite neposrednega primerka, je, da se izognete zanašanju na različico Excelove knjižnice tako, da se nanjo neposredno sklicujete.
S tem boste lahko videli najnovejšo različico.
Nato se lahko sklicujete Version
na lastnosti iz ustvarjenega application
primerka in dobite različico.
Pridobljena različica je različica, ki jo ima Excel interno. Excel 2010 je na primer 14.0, Excel 2013 15.0, Excel 2016 in novejše različice pa 16.0.
Upoštevajte, da se ta postopek ne razlikuje od dejanskega zagona Excela, zato, če ne pokličete metode in Excel.Application
izdajeSystem.Runtime.InteropServices.Marshal.ReleaseComObject
, bo Excelov proces ostal.
Mimogrede, ta koda je bila preizkušena na .NET 6, vendar mislim, da jo je mogoče uporabiti v ogrodju .NET Framework na enak način.
Deluje v .NET, vendar Type.GetTypeFromProgID
ne pozabite, da so metode in metode koda samo za Windows in System.Runtime.InteropServices.Marshal.ReleaseComObject
ne bodo delovale na drugih platformah.