Kiểm tra phiên bản nội bộ của Excel được cài đặt trong .NET
Môi trường hoạt động
- Visual Studio
-
- Visual Studio 2022
- .MẠNG
-
- .NET 6,0
- Windows
-
- cửa sổ 11
- Excel
-
- Microsoft 365
Điều kiện tiên quyết
- Windows
-
- Một trong những phiên bản
- Excel
-
- Một trong những phiên bản
Giới thiệu về phiên bản nội bộ
Lần này, bạn có thể kiểm tra phiên bản nội bộ của Excel theo lập trình, nhưng kể từ ngày 07/05/2023, phiên bản nội bộ của Excel 2016 trở lên không thay đổi từ 16.0. Do đó, không còn có thể xác định Excel 2016, 2019, 2021 và Microsoft 265 bằng các phiên bản nội bộ của chúng. Tuy nhiên, vì phiên bản nội bộ không thay đổi, ưu điểm là miễn là phiên bản mới không ra mắt, thư viện Excel có thể được sử dụng chung kể từ năm 2016.
Về chương trình hoạt động
Bạn có thể tìm hiểu phiên bản nội bộ nào của Excel được cài đặt với mã sau: Vì nó là một phương pháp, có thể đưa nó vào chương trình của riêng bạn như hiện tại.
GetInstallExcelVersion
Nếu bạn gọi phương thức, phiên bản sẽ được trả về dưới dạng số.
<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);
}
}
}
Một lời giải thích đơn giản về chương trình là sử dụng phương pháp để Excel.Application
lấy loạiType.GetTypeFromProgID
ID chương trình,
Activator.CreateInstance
Phương thức tạo ra một Excel.Application
thể hiện của .
Excel.Application
Lý do không tạo ra một phiên bản trực tiếp của là để tránh dựa vào phiên bản của thư viện Excel bằng cách tham chiếu trực tiếp đến nó.
Bằng cách này, bạn sẽ có thể xem phiên bản mới nhất.
Sau đó, bạn có thể tham khảo Version
các thuộc tính từ phiên bản được tạo application
và tải phiên bản.
Phiên bản được truy xuất là phiên bản Excel có nội bộ. Ví dụ: Excel 2010 là 14.0, Excel 2013 là 15.0 và Excel 2016 trở lên là 16.0.
Lưu ý rằng quá trình này không khác với thực sự khởi động Excel, vì vậy nếu bạn không gọi phương thức và Excel.Application
phát hành, System.Runtime.InteropServices.Marshal.ReleaseComObject
quá trình Excel sẽ vẫn còn.
Nhân tiện, mã này đã được thử nghiệm trên .NET 6, nhưng tôi nghĩ nó có thể được sử dụng trong .NET Framework theo cách tương tự.
Nó hoạt động trong .NET, nhưng Type.GetTypeFromProgID
hãy nhớ rằng các phương thức và phương thức là mã chỉ dành cho Windows và System.Runtime.InteropServices.Marshal.ReleaseComObject
sẽ không hoạt động trên các nền tảng khác.