檢查 .NET Framework 安裝的 Excel 版本

頁面創建日期 :

若要獲取已安裝的 Excel 版本,請使用Type.GetTypeFromProgID方法獲取Excel.Application類型,並使用Activator.CreateInstance方法生成實例。 不要直接生成 Excel.Application 實例,以避免直接引用依賴於版本。 這樣,您才能查看最新版本。

然後,您可以從生成的應用程式實例引用版本屬性以獲取版本。 檢索的版本是 Excel 內部的版本。 例如,Excel 2010 為 14.0,Excel 2013 為 15.0。

此外,若要使用這些類,必須在 using 中設置"系統.反射" 和「系統.運行時.Interop Services」。

/// <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.ReleaseComObject 發表應用程式。 請記住,如果您忘記了這一點,Excel 進程將保持不變,因此請確保在 finally 中釋放它。