ค้นหาว่ามีการติดตั้ง Excel รุ่นใดในกรอบงาน .NET

วันที่สร้างเพจ :

เมื่อต้องการรับ Excel รุ่นติดตั้ง ให้ใช้วิธีType.GetTypeFromProgIDเพื่อรับชนิดของExcel.Applicationและสร้างอินสแตนซ์ด้วยวิธีการActivator.CreateInstance ไม่สร้างอินสแตนซ์ของ Excel.Application โดยตรงคือการหลีกเลี่ยงการถูกขึ้นอยู่กับรุ่นโดยไล้โดยตรง ด้วยวิธีนี้คุณจะสามารถดูรุ่นล่าสุด

คุณสามารถอ้างอิงคุณสมบัติเวอร์ชันจากอินสแตนซ์ของแอพลิเคชันที่สร้างขึ้นเพื่อรับเวอร์ชัน รุ่นที่ดึงมาเป็นรุ่นที่ Excel มีภายใน ตัวอย่างเช่น Excel 2010 คือ 14.0 และ Excel 2013 คือ 15.0

นอกจากนี้ เมื่อต้องการใช้คลาสเหล่านี้ คุณต้องกําหนดค่า System.Reflection และ System.Runtime.InteropServices ในการใช้

/// <summary>
/// インストールされている Excel のバージョンを取得します。
/// </summary>
/// <returns>インストールされている Excel のバージョン。</returns>
public static decimal GetInstallExcelVersion()
{
  // Excelアプリケーションに接続
  var type = Type.GetTypeFromProgID("Excel.Application");
  object application = null;
  try
  {
    application = Activator.CreateInstance(type);

    if (application == null)
    {
      // 未インストールの場合
      return 0;
    }

    // バージョンを取得
    var ver =
        application.GetType().InvokeMember(
        "Version", BindingFlags.GetProperty, null, application, null);

    decimal version;
    if (!decimal.TryParse(ver.ToString(), out version))
    {
      return 0;
    }
    return version;
  }
  finally
  {
    if (application != null)
    {
      Marshal.ReleaseComObject(application);
    }
  }
}

เว็บไซต์อื่น ๆ มีคําอธิบายที่คล้ายกัน แต่บางเว็บไซต์ไม่ปล่อยการใช้งานกับ Marshal.ReleaseObject ถ้าคุณลืมขั้นตอนนี้กระบวนการ Excel จะยังคงอยู่ดังนั้นให้แน่ใจว่าคุณปล่อยมันในท้ายที่สุด