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

C# 检查已安装的Excel版本,然后在C中动态加载COM对象库#,c#,excel,com,load,interop,C#,Excel,Com,Load,Interop,我正在使用Microsoft.Office.Interop.Excel将数据写入C#中的Excel文件。我使用的是Excel 2010,因此添加了Microsoft Excel 14.0对象库作为参考。。但现在我需要让程序在Excel2003及以上版本上运行。因此,我删除了对Microsoft Excel 14.0对象库的引用,现在正在寻找一种方法来检查机器上已安装的Excel版本,然后使用它的COM对象库 目前,我使用此代码检查版本,但它返回“2007”而不是“2010”。 我做错了什么 n

我正在使用Microsoft.Office.Interop.Excel将数据写入C#中的Excel文件。我使用的是Excel 2010,因此添加了Microsoft Excel 14.0对象库作为参考。。但现在我需要让程序在Excel2003及以上版本上运行。因此,我删除了对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对象库,以便在我的程序中使用。有办法做到这一点吗?任何帮助都将不胜感激。提前感谢。

您的注册表中同时有
12.0
14.0

对于你的问题的第二部分考虑使用后期绑定。有关在C#中使用后期绑定的更多信息,请参阅


搜索后期绑定产生了另一篇好文章。

哦,谢谢!现在,我想问一下,是否有办法加载COM对象库,以便在我的项目中使用特定版本的Excel,这样我就可以在Excel文件上进行编写。我该怎么做?@jaqui更新了我关于后期绑定建议的答案。你为什么不直接引用“旧的”Excel2007PIA/库?这将适用于所有后续版本的Excel。我的计算机上只安装了Excel 2010,但我需要使我的程序在Excel 2003和2007上运行。所以,我正在考虑根据安装在特定机器上的Excel版本以编程方式添加库。我理解,但这太复杂了。我想,只要抓取一个旧的excelpia(),你就不必做这些了。但我必须这么做。。我需要帮助..我试图安装O2003PIA.MSI,但它说我必须先安装MS Excel 2003。。如何引用旧版Excel 2003 PIA/库?