.NET instalētās Excel iekšējās versijas pārbaude
Darbības vide
- Visual Studio
-
- Visual Studio 2022
- .NETO
-
- .NET 6.0
- Windows
-
- Operētājsistēmā Windows 11
- Excel
-
- Microsoft 365
Priekšnoteikumi
- Windows
-
- Viena no versijām
- Excel
-
- Viena no versijām
Par iekšējām versijām
Šoreiz jūs varat pārbaudīt Excel iekšējo versiju programmiski, bet no 2023/05/07 Excel 2016 un jaunākas versijas iekšējā versija nav mainījusies no 16.0. Tā rezultātā vairs nav iespējams identificēt Excel 2016, 2019, 2021 un Microsoft 265 pēc to iekšējām versijām. Tomēr, tā kā iekšējā versija nav mainījusies, priekšrocība ir tā, ka, kamēr neiznāk jauna versija, Excel bibliotēku var izmantot kopīgi kopš 2016. gada.
Par operētājsistēmu
Jūs varat uzzināt, kura Excel iekšējā versija ir instalēta ar šādu kodu: Tā kā tā ir metode, ir iespējams to nogādāt savā programmā, kāda tā ir.
GetInstallExcelVersion
Ja izsaucat metodi, versija tiks atgriezta kā numurs.
<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);
}
}
}
Vienkāršs programmas skaidrojums ir izmantot metodi, lai Excel.Application
iegūtu programmas ID veiduType.GetTypeFromProgID
,
Activator.CreateInstance
Ar šo metodi tiek Excel.Application
izveidots piemērs .
Excel.Application
Iemesls, kāpēc netiek ģenerēts tiešs gadījums, ir izvairīties no paļaušanās uz Excel bibliotēkas versiju, tieši atsaucoties uz to.
To darot, jūs varēsiet redzēt jaunāko versiju.
Pēc tam varat atsaukties Version
uz rekvizītiem no ģenerētās application
instances un iegūt versiju.
Izgūtā versija ir versija, kas programmai Excel ir iekšēji. Piemēram, Excel 2010 ir 14,0, Excel 2013 ir 15,0 un Excel 2016 un jaunākas versijas ir 16,0.
Ņemiet vērā, ka šis process neatšķiras no faktiskās Excel startēšanas, tādēļ, ja jūs neizsauksit metodi un Excel.Application
atlaidīsit , System.Runtime.InteropServices.Marshal.ReleaseComObject
Excel process paliks.
Starp citu, šis kods ir pārbaudīts .NET 6, bet es domāju, ka to var izmantot .NET Framework tādā pašā veidā.
Tas darbojas .NET, taču Type.GetTypeFromProgID
ņemiet vērā, ka metodes un metodes ir tikai Windows kods un System.Runtime.InteropServices.Marshal.ReleaseComObject
nedarbosies citās platformās.