2013-05-30 35 views
1

如果在目標機器上安裝了Excel,則需要使用Excel;如果沒有,則需要生成text文件。.net檢測Office.interop.Excel是否存在

我檢查了excel application註冊表項的存在,但在此之前我能做到這一點,我得到一個

System.IO.FileNotFoundException: Could not load file or assembly Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral,PublicKeyToken=71e9bce111e9429c 

或它的一個依賴。

如何檢測interop程序集是否可用並防止run-time嘗試加載它,如果不是。 (我不知道目標上可能存在哪個版本的Excel,所以我不認爲我可以在發生錯誤的情況下重新分配interop)。

+0

我覺得這可能有助於 http://stackoverflow.com/questions/3266675/how-to-detect-installed-version-of-ms-office/3267832#3267832 –

+0

您添加了一個參考的Interop組裝到你的對象?在應用程序啓動之前出現錯誤還是出現在特定的代碼行中? –

回答

2

看起來您添加了對特定interop的引用組裝在你的代碼中。你的應用程序不會加載,因爲它找不到所有需要運行的程序集。如果您絕對必須通過Interop使用Excel,則必須刪除引用並使用Assembly.Load動態加載程序集。

如果您只想讀取/創建Excel文件,則完全不需要Excel。

XLSX只是一堆壓縮的XML文件。 Microsoft的OpenXML SDK允許您直接處理XML文件,並且還有其他庫位於SDK之上,以使編程變得更加簡單。

Generating Excel 2010 Workbooks by using the Open XML SDK 2.0提供了對XLSX格式的非常詳細的解釋,以及如何使用SDK輕鬆創建簡單而複雜的電子表格。

+0

啊,遺產,遺產 - 我不喜歡maipilate exisitng xls文件以及xlxs文件。 – Phil

+0

我打算使用Assembly.load,並捕獲異常,但是您知道在哪裏可以找到Excel 2012和2010的程序集的長名稱嗎? – Phil