【发布时间】:2013-05-03 11:12:53
【问题描述】:
我正在使用 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 对象库以在我的程序中使用。有没有办法做到这一点?任何帮助,将不胜感激。提前致谢。
【问题讨论】:
-
为什么不直接引用“旧”Excel 2007 PIA/库?这将适用于所有后续版本的 Excel。
-
我的机器上只安装了 Excel 2010,但我需要让我的程序在 Excel 2003 和 2007 上运行。所以,我正在考虑基于安装的 Excel 版本以编程方式添加库特定的机器。
-
我明白,但恕我直言,这太复杂了。只需使用旧的 Excel PIA (microsoft.com/en-us/download/details.aspx?id=18346),您就不必执行所有这些操作。
-
我猜。但我必须这样做..我需要帮助..
-
我尝试安装 O2003PIA.MSI,但它说我必须先安装 MS Excel 2003.. 我如何引用这个旧的 Excel 2003 PIA/Library?