Как программно проверить, существует ли на компьютере MS Excel? - PullRequest
19 голосов
/ 19 августа 2011

У меня есть приложение, для запуска которого требуется MS Excel, в противном случае происходит сбой. Поэтому я хочу проверить и предупредить пользователя в случае, если Excel не установлен на компьютере пользователя.

Как мне это сделать?

Ответы [ 5 ]

37 голосов
/ 19 августа 2011
Type officeType = Type.GetTypeFromProgID("Excel.Application");
if (officeType == null)
{
     //no Excel installed
}
else
{
     //Excel installed
}
3 голосов
/ 19 августа 2011
const string ASSEMBLY2003 = "Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c";  

static bool IsAssemblyInstalled(string assembly)  
{  
   try 
   {  
       s_assemblyExcel = Assembly.Load(assembly);  
       return true;  
   }   
   catch 
   {  
       return false;  
   }  
} 

это поможет, просто сделайте это для всех версий

и это тоже можно сделать

RegistryKey key = Registry.ClassesRoot;
RegistryKey excelKey = key.OpenSubKey("Excel.Application");
bool excelInstalled = excelKey == null ? false : true;
3 голосов
/ 19 августа 2011

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

2 голосов
/ 19 августа 2011

Это не отвечает на ваш конкретный вопрос , но решает его с альтернативного направления ...

Действительно ли нужно MS Excel для установки, или вам нужен компьютер, чтобы просто отображать файлы Excel ? Например, если у пользователя установлено LibreOffice или другое подобное приложение, совместимое с Excel-файлом, это будет приемлемо?

У нас есть приложение, которое открывает файлы Excel и PDF для пользователя. Нам не важно, какое программное обеспечение они используют на своем компьютере для просмотра этих файлов. Это не совсем наша забота. Мы просто Process.Start(...) файл и позволяем ОС взять его оттуда.

Мы заключаем вызов в блок Try/Catch и предлагаем пользователю предложения, если этот вызов приведет к ошибке; предложения, например, что у них может не быть установлен Office (Excel), или им не хватает средства просмотра PDF. По сути, вместо того, чтобы активно пытаться определить, находится ли компьютер пользователя в достаточно завершенном состоянии для выполнения действия, мы предполагаем, что это так, но затем обрабатываем ситуацию, когда это происходит не раз, когда мы его обнаружили.

2 голосов
/ 19 августа 2011

Этот пост в этом блоге описывает, как проверить, установлен ли Excel через реестр (код VB.NET, но его легко конвертировать в C #). По сути, вы собираетесь проверить с помощью клавиши HKEY_CLASSES_ROOT\Excel.Application\CurVer.

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