Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

Type officeType = Type.GetTypeFromProgID("Excel.Application");
if (officeType == null)
{
     //no Excel installed
}
else
{
     //Excel installed
}

Ответ 2

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

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

Ответ 5

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

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

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

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