Проверьте установленную версию Excel и запустите ее - PullRequest
1 голос
/ 23 сентября 2011

Я пытаюсь в моем приложении запустить 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

Используя этот ключ, я могу, в основном, найтиОбходной путь, чтобы получить реальный путь.Проблема: такого ключа нет в реестре Windows 7 с установленным Office 2010 (= Office 14).

Ребята, знаете ли вы какой-нибудь способ запустить установленный Excel из C #?

FYI,Вот текущий раздел кода, запускающий Office11 с компьютера x64 / x86:

    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 ]

2 голосов
/ 23 сентября 2011

Если вы запустите Excel, чтобы открыть файл Excel, вы можете запустить Process с файлом Excel как FileName и позволить оболочке Windows выполнить всю работу, чтобы найти соответствующее приложение. Вам понадобится обработчик исключений, очевидно.

Это сделает вас независимым от версий Office и Windows и разделов реестра.

В противном случае вы можете выбрать другой подход и найти соответствующее приложение, например здесь .

Суть этих предложений заключается в следующем: в настоящее время вы должны изменить свой код, как только будет установлена ​​новая версия Office или используется другая версия Windows, хотя есть способ избежать этих зависимостей.

1 голос
/ 23 сентября 2011

32-разрядная версия Excel 2010, работающая в 64-разрядной версии Windows (XPx64, Vistax64, Win7x64), будет иметь следующий ключ.Я думаю, что это ключ, который вы ищете HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Excel\InstallRoot

64-разрядная версия Excel 2010, работающая на 64-разрядной версии Windows (XPx64, Vistax64, Win7x64), будет иметь следующий ключ

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

скопировано с здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...