检查已安装的Excel版本,然后在C#中动态加载COM对象库

时间:2013-05-09 03:41:11

标签: c# excel com load interop

我正在使用Microsoft.Office.Interop.Excel将数据写入C#中的excel文件。我正在使用Excel 2010,所以我添加了Microsoft Excel 14.0对象库作为参考..但是现在我需要使程序在Excel 2003及更高版本上运行。因此,我删除了对Microsoft Excel 14.0对象库的引用,现在正在寻找一种方法来检查机器上已安装的Excel版本,然后使用它的COM对象库。

目前,我使用此代码检查版本,但它返回“2007”而不是“2010”。 我做错了什么?

 namespace OfficeVersionCheck
{
    using System;
    using Microsoft.Win32;

    class Program
    {
        static void Main(string[] args)
        {
            RegistryKey localMachine = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Office\");

            string version = string.Empty;

            foreach (string key in localMachine.GetSubKeyNames())
            {
                if (key == "11.0")
                    version = "2003";
                else if (key == "12.0")
                    version = "2007";
                else if (key == "14.0")
                    version = "2010";

                if (!string.IsNullOrEmpty(version))
                {
                    break;
                }
            }

            Console.Write(version);

            Console.ReadKey();
        }
    }
}

现在检查完版本后,我需要加载其COM对象库以在我的程序中使用。有没有办法做到这一点?任何帮助,将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您的注册表中包含12.014.0个键。

对于问题的第二部分,请考虑使用后期绑定。有关在C#中使用后期绑定的更多信息,请参阅KB 302902: Binding for Office Automation Servers with Visual C# .NET.

搜索Late Binding会产生另一篇好文章here