Semak versi dalaman Excel yang dipasang dalam .NET
Persekitaran operasi
- Visual Studio
-
- Visual Studio 2022
- .BERSIH
-
- .NET 6.0
- Windows
-
- Windows 11
- Excel
-
- Microsoft 365
Prasyarat
- Windows
-
- Salah satu versi
- Excel
-
- Salah satu versi
Perihal Versi Dalaman
Kali ini, anda boleh menyemak versi dalaman Excel secara programatik, tetapi pada 2023/05/07, versi dalaman Excel 2016 dan lebih baru tidak berubah daripada 16.0. Akibatnya, tidak lagi mungkin untuk mengenal pasti Excel 2016, 2019, 2021 dan Microsoft 265 dengan versi dalaman mereka. Walau bagaimanapun, memandangkan versi dalaman tidak berubah, kelebihannya ialah selagi versi baru tidak keluar, pustaka Excel boleh digunakan secara umum sejak 2016.
Mengenai program operasi
Anda boleh mengetahui versi dalaman Excel yang dipasang dengan kod berikut: Oleh kerana ia adalah kaedah, adalah mungkin untuk membawanya ke program anda sendiri kerana ia adalah.
GetInstallExcelVersion
Jika anda memanggil kaedah itu, versi akan dikembalikan sebagai nombor.
<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);
}
}
}
Penjelasan mudah mengenai program ini adalah menggunakan kaedah Excel.Application
untuk mendapatkan jenisType.GetTypeFromProgID
ID program,
Activator.CreateInstance
Kaedah ini mencipta Excel.Application
contoh .
Excel.Application
Sebab untuk tidak menjana kejadian langsung adalah untuk mengelakkan bergantung pada versi pustaka Excel dengan merujuknya secara langsung.
Dengan melakukan ini, anda akan dapat melihat versi terkini.
Anda kemudian boleh merujuk kepada Version
sifat daripada contoh yang dijana application
dan mendapatkan versi.
Versi yang diambil ialah versi Excel secara dalaman. Contohnya, Excel 2010 ialah 14.0, Excel 2013 ialah 15.0 dan Excel 2016 dan lebih baru ialah 16.0.
Perhatikan bahawa proses ini tidak berbeza dengan benar-benar memulakan Excel, jadi jika anda tidak memanggil kaedah Excel.Application
dan melepaskan , System.Runtime.InteropServices.Marshal.ReleaseComObject
proses Excel akan kekal.
Dengan cara ini, kod ini telah diuji pada .NET 6, tetapi saya fikir ia boleh digunakan dalam Rangka Kerja .NET dengan cara yang sama.
Ia berfungsi dalam .NET, tetapi Type.GetTypeFromProgID
perlu diingat bahawa kaedah dan kaedah adalah kod Windows sahaja dan System.Runtime.InteropServices.Marshal.ReleaseComObject
tidak akan berfungsi pada platform lain.