Vérifier la version interne d’Excel installée dans .NET
Environnement d’exploitation
- Visual Studio
-
- Visual Studio 2022
- .FILET
-
- .NET 6.0
- Windows
-
- Fenêtres 11
- Exceller
-
- Microsoft 365 (en anglais)
Conditions préalables
- Windows
-
- L’une des versions
- Exceller
-
- L’une des versions
À propos des versions internes
Cette fois, vous pouvez vérifier la version interne d’Excel par programmation, mais à partir du 07/05/2023, la version interne d’Excel 2016 et versions ultérieures n’a pas changé par rapport à la version 16.0. Par conséquent, il n’est plus possible d’identifier Excel 2016, 2019, 2021 et Microsoft 265 par leurs versions internes. Cependant, comme la version interne n’a pas changé, l’avantage est que tant qu’une nouvelle version ne sort pas, la bibliothèque Excel peut être utilisée en commun depuis 2016.
À propos du programme d’exploitation
Vous pouvez savoir quelle version interne d’Excel est installée avec le code suivant : Puisqu’il s’agit d’une méthode, il est possible de l’apporter à votre propre programme tel quel.
GetInstallExcelVersion
Si vous appelez la méthode, la version sera renvoyée sous la forme d’un nombre.
<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);
}
}
}
Une explication simple du programme est d’utiliser la méthode pour Excel.Application
obtenir le type d’ID duType.GetTypeFromProgID
programme,
Activator.CreateInstance
La méthode crée une Excel.Application
instance de .
Excel.Application
La raison de ne pas générer d’instance directe de est d’éviter de s’appuyer sur la version de la bibliothèque Excel en la référençant directement.
En faisant cela, vous pourrez voir la dernière version.
Vous pouvez ensuite vous référer aux Version
propriétés de l’instance générée application
et obtenir la version.
La version récupérée est la version qu’Excel possède en interne. Par exemple, Excel 2010 est 14.0, Excel 2013 est 15.0 et Excel 2016 et versions ultérieures sont 16.0.
Notez que ce processus n’est pas différent du démarrage réel d’Excel, donc si vous n’appelez pas la méthode et Excel.Application
relâchez , System.Runtime.InteropServices.Marshal.ReleaseComObject
le processus Excel restera.
Soit dit en passant, ce code a été testé sur .NET 6, mais je pense qu’il peut être utilisé dans le .NET Framework de la même manière.
Cela fonctionne dans .NET, mais Type.GetTypeFromProgID
gardez à l’esprit que les méthodes et les méthodes sont du code Windows uniquement et System.Runtime.InteropServices.Marshal.ReleaseComObject
ne fonctionneront pas sur d’autres plates-formes.