Проверьте установленную версию Excel и запустите ее

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

Любые идеи сделать этот код более общим?

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

скопировано отсюда

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

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

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

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

Interesting Posts

экспорт файла excel, но он находится в формате веб-страницы

Ограничения импорта таблицы сводной таблицы Excel

Случай изменения рабочего листа для изменений в одном столбце, который выполняется один раз

Экспорт ошибки excel: файл, который вы пытаетесь открыть FileName, находится в другом формате, чем указанное расширение

VBA Преобразование даты на номер недели

Пытаясь прочитать поток файлов файлов Excel в C #, я получаю числа вместо текста

Excel VBA для скрытия или скрытия рабочей таблицы, основанной на ценности ячейки

Функция Excel «pull» из закрытых файлов, но для диапазона, а не для одной ячейки

Excel VBA – замена encodeURL для работы под Windows и macOS

Встроенный Excel в панели проблем с C #

Преобразование большого формата времени в десятичное в excel

Если заявление для проверки времени в excel

Excel: Формула OFFSET в менеджере имен

Откройте Excel с кодировкой ANSI, в Excel 2010

Условное форматирование файла Excel с использованием ColdFusion

Давайте будем гением компьютера.