检查 .NET Framework 上安装的 Excel 版本

页面创建日期 :

若要获取已安装的 Excel 版本,请使用Type.GetTypeFromProgID方法获取Excel.Application类型,并使用Activator.CreateInstance方法生成实例。 不要直接生成 Excel.Application 实例,以避免直接引用依赖于版本。 这样,您才能查看最新版本。

然后,您可以从生成的应用程序实例引用版本属性以获取版本。 检索的版本是 Excel 内部的版本。 例如,Excel 2010 为 14.0,Excel 2013 为 15.0。

此外,若要使用这些类,必须在 using 中设置"系统.反射"和"系统.运行时.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.ReleaseComObject 发布应用程序。 请记住,如果您忘记了这一点,Excel 进程将保持不变,因此请确保在 finally 中释放它。