回答
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. 如何以編程方式檢查Microsoft.Office.Interop.Excel是否適用於VB?
- 8. VB.NET - 以編程方式檢查Excel中是否存在工作表
- 9. 以編程方式檢查COM端口是否存在於C#
- 10. 以編程方式檢查Oracle AQ隊列是否存在
- 11. 如何以編程方式檢查Zookeeper是否正在運行
- 12. 如何以編程方式檢查Zookeeper是否正在運行?
- 13. ansible - 檢查本地計算機上是否存在文件
- 14. 以編程方式檢查在Windows上是否啓用了IPv6
- 15. 如何以編程方式檢查方向是否鎖定在iOS上 - Swift
- 16. 如何檢查System.webServer/Security/requestFiltering部分是否以編程方式存在?
- 17. 如何以編程方式檢查是否安裝使用Java
- 18. 如何檢查是否以編程方式請求頁面?
- 19. 如何檢查iCloud是否以編程方式配置
- 20. 如何以編程方式檢查MP4是否損壞?
- 21. 如何以編程方式檢查wcf服務是否停止
- 22. 如何以編程方式檢查iCloud Drive是否被激活
- 23. 如何檢查藍牙是否以編程方式啓用?
- 24. 如何以編程方式檢查鍵盤是否連接?
- 25. Android - 如何以編程方式檢查手機是否有信用?
- 26. 如何以編程方式檢查手機是否具備WiFi功能?
- 27. 檢查以太網上的Windows計算機是否通過C++
- 28. 以編程方式檢查我的計算機是否可以訪問互聯網
- 29. 如何檢查遠程計算機是否可以在perl中ping通
- 30. 是否可以檢查Google Chrome是否安裝在客戶端計算機上?
更簡單的方法是檢查註冊表。閱讀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