Проверьте установленную версию Excel и запустите ее
Я пытаюсь в своем приложении запустить Microsoft Excel с конкретными аргументами (то есть, дополнительные xla & xll).
Пока это работает нормально, потому что у всех моих пользователей установлен только Office11 (= 2003).
Моя компания собирается перейти на Windows 7 и Office 2010, и я логически не могу запустить excel, так как .exe не находится в C:\Program Files:\Microsoft Office\Office11\EXCEL.EXE
- Excel не запрашивает неправильное расширение (ExtensionHardening)
- Настройка панели формул Excel
- Чтение и запись из / в реестр в VBA
- Странное поведение с RegQueryValueEx whitch возвращает значение другого регистра
- Формат даты по умолчанию Excel yyyy-mm-dd hh: mm: ss в сравнении с yyyy-mm-dd hh: mm
Я проверил быструю проверку в реестре, чтобы убедиться, что я могу определенно проверить, какая версия установлена. Также есть множество статей, объясняющих, как получить установленную версию 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(); } }
Любые идеи сделать этот код более общим?
- Как выбрать версию Excel для открытия с помощью VB.NET?
- Как создать собственный раздел реестра «Программируемый», предназначенный для 64-битной ОС с помощью редактора реестра VS2010
- Как перечислять все программы, которые могут открывать XML-файл в виде обычного текста?
- Как изменить значение реестра ACE TypeGuessRows для Access 2007 для правильного определения типа данных полей при импорте из файла Excel с помощью VBA
- Список всех надстроек Excel на клиентской машине
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, хотя есть способ избежать этих зависимостей.