回答
Type officeType = Type.GetTypeFromProgID("Excel.Application");
if (officeType == null)
{
//no Excel installed
}
else
{
//Excel installed
}
作为速战速决,你可以只捕获异常并执行适当的错误处理。然后你可以通知用户那里。
这此处的博客文章介绍如何verify if Excel is installed via the registry(VB.NET代码,但可以很容易地转换为C#)。基本上,您将通过HKEY_CLASSES_ROOT\Excel.Application\CurVer
密钥进行验证。
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;
Downvoted是因为加载程序集来查看它是否安装非常低效(并且如果不在自己的应用程序域中执行,您也无法卸载它) – Larry
这不回答您的具体问题,但确实可以从另一方向解决它......
它真正的LY需要安装MS Excel中,或者你需要的计算机简单地能够显示Excel文件?例如,如果用户安装了LibreOffice或其他类似Excel文件兼容的应用程序,那么这可以接受吗?
我们有一个为用户打开Excel文件和PDF文件的应用程序。我们并不在乎他们用户使用哪些软件在他们的计算机上查看这些文件。这不是我们所关心的。我们只需要Process.Start(...)
这个文件,并让操作系统从那里获取它。
我们做包裹中的呼叫Try/Catch
块,并为用户提供建议,如果此调用导致错误;建议,就像他们可能没有安装Office(Excel),或者他们缺少PDF阅读器。基本上,与其主动尝试确定用户的计算机是否处于完全足够的状态来执行操作,我们假定它是,但是当它不是我们发现它时就处理这种情况。
- 1. 如何以编程方式检查工具是否安装在远程计算机上
- 2. 如何以编程方式检测计算机是否位于局域网内?
- 3. 如何以编程方式检查远程Linux计算机上是否安装了python软件包?
- 4. 如何以编程方式检查c#中是否存在程序集引用?
- 5. 使用ASP.NET MVC3以编程方式检查计算机标识
- 6. 使用Microsoft.Sdc.Tasks.ServiceProcess.ControlService如何检查远程计算机上是否存在服务?
- 7. VB.NET - 以编程方式检查Excel中是否存在工作表
- 8. 以编程方式检查Oracle AQ队列是否存在
- 9. 以编程方式检查COM端口是否存在于C#
- 10. 如何以编程方式检查Zookeeper是否正在运行
- 11. 如何以编程方式检查Zookeeper是否正在运行?
- 12. ansible - 检查本地计算机上是否存在文件
- 13. 以编程方式检查在Windows上是否启用了IPv6
- 14. 如何以编程方式检查方向是否锁定在iOS上 - Swift
- 15. 如何检查System.webServer/Security/requestFiltering部分是否以编程方式存在?
- 16. 如何以编程方式检查是否安装使用Java
- 17. 如何检查蓝牙是否以编程方式启用?
- 18. 如何以编程方式检查MP4是否损坏?
- 19. 如何以编程方式检查键盘是否连接?
- 20. 检查以太网上的Windows计算机是否通过C++
- 21. 如何以编程方式检查手机是否具备WiFi功能?
- 22. Android - 如何以编程方式检查手机是否有信用?
- 23. 如何检查远程计算机是否可以在perl中ping通
- 24. 是否可以检查Google Chrome是否安装在客户端计算机上?
- 25. 如何以编程方式检查警报是否已经计划好?
- 26. 如何检查SQL实例是否在远程计算机上运行
- 27. 以编程方式在Python中查看网络上的其他计算机
- 28. 如何确保计算机以编程方式在NZST上运行
- 29. 以编程方式检查头文件是否存在的最佳方法?
- 30. 如何以编程方式检查Visio是否已安装以及在哪里?
更简单的方法是检查注册表。阅读http://stackoverflow.com/questions/244517/where-is-a-reliable-registry-key-to-find-install-location-of-excel-2007 – Zenwalker
你能告诉我们更多关于“它吗?崩溃?”也许在崩溃的地区包含一些相关代码,以便我们了解您的使用情况/需求? – ckittel
很好的崩溃是excpeted,因为没有安装Excel中,错误的是这样的:“检索与COM工厂CLSID {00024500-0000-C000-0000000000046}失败,原因是出现以下错误:80040154没有注册类(从HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))。“一个try catch在这种情况下做得很好,就像你在下面提到的那样[我刚刚尝试过],但是我只是想让代码更”有针对性“并搜索只存在于Excel 。这里需要警告用户,在当前fase中,项目需要ms excel,并且不要尝试打开form1,所以这个msg是可以避免的 – Karapapas