Periksa versi internal Excel yang diinstal di .NET
Lingkungan operasi
- Visual Studio
-
- Visual Studio 2022
- .JARING
-
- .NET 6.0
- Windows
-
- jendela 11
- Melampaui
-
- Microsoft 365
Prasyarat
- Windows
-
- Salah satu versi
- Melampaui
-
- Salah satu versi
Tentang Versi Internal
Kali ini, Anda dapat memeriksa versi internal Excel secara terprogram, tetapi mulai 2023/05/07, versi internal Excel 2016 dan yang lebih baru tidak berubah dari 16.0. Akibatnya, tidak mungkin lagi mengidentifikasi Excel 2016, 2019, 2021, dan Microsoft 265 berdasarkan versi internalnya. Namun, karena versi internal tidak berubah, keuntungannya adalah selama versi baru tidak keluar, pustaka Excel dapat digunakan secara umum sejak 2016.
Tentang program operasi
Anda dapat mengetahui versi internal Excel mana yang diinstal dengan kode berikut: Karena ini adalah metode, dimungkinkan untuk membawanya ke program Anda sendiri apa adanya.
GetInstallExcelVersion
Jika Anda memanggil metode ini, versi akan dikembalikan sebagai nomor.
<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 sederhana dari program ini adalah dengan menggunakan metode untuk Excel.Application
mendapatkan jenisType.GetTypeFromProgID
ID program,
Activator.CreateInstance
Metode ini membuat Excel.Application
instance .
Excel.Application
Alasan untuk tidak menghasilkan contoh langsung adalah untuk menghindari mengandalkan versi pustaka Excel dengan merujuknya secara langsung.
Dengan melakukan ini, Anda akan dapat melihat versi terbaru.
Anda kemudian dapat merujuk ke Version
properti dari instans yang dihasilkan application
dan mendapatkan versinya.
Versi yang diambil adalah versi yang dimiliki Excel secara internal. Misalnya, Excel 2010 adalah 14.0, Excel 2013 adalah 15.0, dan Excel 2016 dan yang lebih baru adalah 16.0.
Perhatikan bahwa proses ini tidak berbeda dengan benar-benar memulai Excel, jadi jika Anda tidak memanggil metode dan Excel.Application
rilis, System.Runtime.InteropServices.Marshal.ReleaseComObject
proses Excel akan tetap ada.
Omong-omong, kode ini telah diuji pada .NET 6, tetapi saya pikir itu dapat digunakan dalam .NET Framework dengan cara yang hampir sama.
Ini berfungsi di .NET, tetapi Type.GetTypeFromProgID
perlu diingat bahwa metode dan metode adalah kode khusus Windows dan System.Runtime.InteropServices.Marshal.ReleaseComObject
tidak akan berfungsi pada platform lain.