Kontrollera den interna versionen av Excel som är installerad i .NET
Omvärld
- Visuell studio
-
- Visual Studio 2022
- .NÄT
-
- .NET 6.0
- Windows
-
- Windows 11 (på engelska)
- Överträffa
-
- Microsoft 365 (på engelska)
Förutsättningar
- Windows
-
- En av versionerna
- Överträffa
-
- En av versionerna
Om interna versioner
Den här gången kan du kontrollera den interna versionen av Excel programmatiskt, men från och med 2023-05-07 har den interna versionen av Excel 2016 och senare inte ändrats från 16.0. Därför är det inte längre möjligt att identifiera Excel 2016, 2019, 2021 och Microsoft 265 med deras interna versioner. Men eftersom den interna versionen inte har ändrats är fördelen att så länge en ny version inte kommer ut kan Excel-biblioteket användas gemensamt sedan 2016.
Om verksamhetsprogrammet
Du kan ta reda på vilken intern version av Excel som är installerad med följande kod: Eftersom det är en metod är det möjligt att ta med den till ditt eget program som den är.
GetInstallExcelVersion
Om du anropar metoden returneras versionen som ett tal.
<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);
}
}
}
En enkel förklaring av programmet är att använda metoden för att Excel.Application
få fram typen avType.GetTypeFromProgID
program-ID,
Activator.CreateInstance
Metoden skapar en Excel.Application
instans av .
Excel.Application
Anledningen till att inte generera en direkt instans av är att undvika att förlita sig på versionen av Excel-biblioteket genom att referera till den direkt.
Genom att göra detta kommer du att kunna se den senaste versionen.
Du kan sedan referera till Version
egenskaperna från den genererade application
instansen och hämta versionen.
Den version som hämtas är den version som Excel har internt. Excel 2010 är till exempel 14.0, Excel 2013 är 15.0 och Excel 2016 och senare är 16.0.
Observera att den här processen inte skiljer sig från att faktiskt starta Excel, så om du inte anropar metoden och Excel.Application
släpper kommer System.Runtime.InteropServices.Marshal.ReleaseComObject
Excel-processen att finnas kvar.
Den här koden har förresten testats på .NET 6, men jag tror att den kan användas i .NET Framework på ungefär samma sätt.
Det fungerar i .NET, men Type.GetTypeFromProgID
tänk på att metoderna och metoderna endast är Windows-kod och System.Runtime.InteropServices.Marshal.ReleaseComObject
inte fungerar på andra plattformar.