ตรวจสอบเวอร์ชันภายในของ Excel ที่ติดตั้งใน .NET
สภาพแวดล้อมการทํางาน
- วิชวลสตูดิโอ
-
- Visual Studio 2022
- ตาข่าย
-
- .NET 6.0
- หน้าต่าง
-
- หน้าต่าง 11
- ยอดเยี่ยม
-
- ไมโครซอฟท์ 365
ข้อกําหนดเบื้องต้น
- หน้าต่าง
-
- หนึ่งในรุ่น
- ยอดเยี่ยม
-
- หนึ่งในรุ่น
เกี่ยวกับเวอร์ชันภายใน
คราวนี้คุณสามารถตรวจสอบเวอร์ชันภายในของ Excel โดยทางโปรแกรม แต่ตั้งแต่วันที่ 2023/05/07 เวอร์ชันภายในของ Excel 2016 และใหม่กว่าจะไม่เปลี่ยนแปลงจาก 16.0 ด้วยเหตุนี้ จึงไม่สามารถระบุ Excel 2016, 2019, 2021 และ Microsoft 265 ด้วยเวอร์ชันภายในได้อีกต่อไป อย่างไรก็ตามเนื่องจากเวอร์ชันภายในไม่เปลี่ยนแปลงข้อดีคือตราบใดที่เวอร์ชันใหม่ไม่ออกมาไลบรารี Excel สามารถใช้ร่วมกันได้ตั้งแต่ปี 2559
เกี่ยวกับโปรแกรมปฏิบัติการ
คุณสามารถค้นหาว่า Excel เวอร์ชันภายในใดที่ติดตั้งด้วยรหัสต่อไปนี้: เนื่องจากเป็นวิธีการจึงเป็นไปได้ที่จะนําไปที่โปรแกรมของคุณเองตามที่เป็นอยู่
GetInstallExcelVersion
หากคุณเรียกใช้วิธีการเวอร์ชันจะถูกส่งคืนเป็นหมายเลข
<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);
}
}
}
คําอธิบายง่ายๆของโปรแกรมคือการใช้วิธีการExcel.Application
รับประเภทของType.GetTypeFromProgID
รหัสโปรแกรม
Activator.CreateInstance
วิธีการสร้างExcel.Application
อินสแตนซ์ของ .
Excel.Application
เหตุผลที่ไม่สร้างอินสแตนซ์โดยตรงคือเพื่อหลีกเลี่ยงการพึ่งพาเวอร์ชันของไลบรารี Excel โดยการอ้างอิงโดยตรง
เมื่อทําเช่นนี้คุณจะสามารถดูเวอร์ชันล่าสุดได้
จากนั้นคุณสามารถอ้างถึงVersion
คุณสมบัติจากอินสแตนซ์ที่สร้างขึ้นapplication
และรับเวอร์ชัน
รุ่นที่ถูกดึงข้อมูลเป็นรุ่นที่ Excel มีภายใน ตัวอย่างเช่น Excel 2010 คือ 14.0, Excel 2013 คือ 15.0 และ Excel 2016 และเวอร์ชันที่ใหม่กว่าคือ 16.0
โปรดทราบว่ากระบวนการนี้ไม่แตกต่างจากการเริ่มต้น Excel จริงดังนั้นหากคุณไม่เรียกวิธีการและExcel.Application
ปล่อยกระบวนการ System.Runtime.InteropServices.Marshal.ReleaseComObject
Excel จะยังคงอยู่
อย่างไรก็ตามรหัสนี้ได้รับการทดสอบบน. NET 6 แต่ฉันคิดว่ามันสามารถใช้ใน. NET Framework ในลักษณะเดียวกันมาก
ใช้งานได้ใน. NET แต่ Type.GetTypeFromProgID
โปรดทราบว่าวิธีการและวิธีการเป็นรหัส Windows เท่านั้นและ System.Runtime.InteropServices.Marshal.ReleaseComObject
จะไม่ทํางานบนแพลตฟอร์มอื่น