Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查已安装的Excel版本并启动它 我在我的应用程序中尝试用特定的参数来启动微软Excel(即附加的XLA和XLL)。_C#_Excel_Registry_Ms Office - Fatal编程技术网

C# 检查已安装的Excel版本并启动它 我在我的应用程序中尝试用特定的参数来启动微软Excel(即附加的XLA和XLL)。

C# 检查已安装的Excel版本并启动它 我在我的应用程序中尝试用特定的参数来启动微软Excel(即附加的XLA和XLL)。,c#,excel,registry,ms-office,C#,Excel,Registry,Ms Office,目前它运行良好,因为我所有的用户只安装了Office11(=2003) 我的公司将切换到Windows 7和Office 2010,从逻辑上讲,我无法启动任何excel,因为.exe不在C:\Program Files:\Microsoft Office\Office11\excel.exe 我在注册表中运行了一个快速检查,以查看是否可以明确检查当前安装的版本。还有很多文章解释如何获取当前安装的Office版本 但是,我想知道是否有可能找到任何直接给我.exe路径的东西(比如一个好的注册表项),

目前它运行良好,因为我所有的用户只安装了Office11(=2003)

我的公司将切换到Windows 7和Office 2010,从逻辑上讲,我无法启动任何excel,因为.exe不在
C:\Program Files:\Microsoft Office\Office11\excel.exe

我在注册表中运行了一个快速检查,以查看是否可以明确检查当前安装的版本。还有很多文章解释如何获取当前安装的Office版本

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

使用我当前的计算机(Win XP x86,Office11),我可以在
HKEY\U LOCAL\U 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();
        }
    }

有什么办法使此代码更通用吗?

如果启动Excel以打开Excel文件,则可以启动一个
过程,将Excel文件设置为
文件名
,并让Windows shell完成查找关联应用程序的所有工作。显然,您需要一个异常处理程序

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

否则,您可以采用不同的方法查找关联的应用程序,如


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

在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


复制自

是否也有办法获取版本号(在您的示例中为14.0
)?