检查已安装的Excel版本并启动它

时间:2011-09-23 07:47:59

标签: c# excel registry ms-office

我正在尝试在我的应用程序中启动具有特定参数的Microsoft Excel(即附加的xla和xll)。

现在它工作正常,因为我的所有用户只安装了Office11(= 2003)。

我的公司将转而使用Windows 7& Office 2010和我逻辑上无法启动任何Excel,因为.exe不在C:\Program Files:\Microsoft Office\Office11\EXCEL.EXE

我在注册表中快速检查一下,看看我肯定可以检查当前安装的版本。还有很多文章解释了如何获得当前安装的Office版本。

但是,我想知道是否有可能找到任何东西(例如一个好的注册表项)直接给我.exe路径以启动Excel。

使用我当前的机器(Win XP x86,Office11),我可以在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Excel\InstallRoot找到它

使用此密钥,我基本上可以找到一种解决方法来获取实际路径。问题:安装了Office 2010(= Office 14)的Windows 7注册表中没有此类密钥。

你们有没有办法从C#启动当前安装的excel?

仅供参考,这是当前的代码部分,从x64 / x86机器启动Office11:

    private void LaunchExcel(string arguments)
    {
        if (!Is64BitsOS())
        {
            Process process = new Process();
            process.StartInfo.FileName = "excel";
            process.StartInfo.Arguments = arguments;
            process.Start();
        }
        else
        {
            Process process = new Process();
            process.StartInfo.FileName = "c:/Program Files (x86)/Microsoft Office/Office11/excel.exe";
            process.StartInfo.UseShellExecute = false;

            process.StartInfo.Arguments = arguments;
            process.Start();
        }
    }

使这段代码更通用的任何想法?

2 个答案:

答案 0 :(得分:2)

如果启动Excel以打开Excel文件,则可以使用Excel文件Process启动FileName,并让Windows shell执行所有工作以查找关联的应用程序。显然,你需要一个异常处理程序。

这将使您独立于Office和Windows版本以及注册表项。

否则,您可以采用不同的方法并找到相关的应用程序,例如here

这些建议的重点是:目前,您必须在安装新的Office版本或使用其他Windows版本时立即更改代码,同时有办法避免这些依赖关系。

答案 1 :(得分:1)

在64位版本的Windows(XPx64,Vistax64,Win7x64)上运行的32位版本的Excel 2010将具有以下密钥。 我认为这是你正在寻找的关键 HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Excel\InstallRoot

在64位版本的Windows(XPx64,Vistax64,Win7x64)上运行的64位版本的Excel 2010将具有以下密钥

HKLM\SOFTWARE\Microsoft\Office\14.0\Excel\InstallRoot

here

复制