1. 程式人生 > >c#中轉出Excel時碰到Excel的COM元件沒有註冊的問題解決方法

c#中轉出Excel時碰到Excel的COM元件沒有註冊的問題解決方法

Office 元件 註冊 手工註冊

1、如何生成Interop.Excel.dll?

     進入你的visual studio的sdk下的bin目錄,找到TlbImp.exe檔案(實際上可能不在這裡,所以可以開啟VS的控制檯,輸入tlbimp看下),如果沒有,請用光碟安裝此檔案,TLBIMP的使用說明MSDN:http://msdn.microsoft.com/zh-cn/library/tt0cf3sx(v=vs.80).aspx
     命令列(cmd)進入bin目錄,執行TlbImp /out:Interop.Excel.dll  Excel.exe所在完整路徑

     此時很可能會報錯:TlbImp   error:   Unable   to   locate   input   type   library:   'c:\program files\mcrosoft offi   
  ce\office\EXCEL.EXE' 
     此問題很有可能是TlbImp的bug,不支援空格式的路徑;(具體原因不明)不要緊,將Excel.exe拷貝入bin目錄,直接執行TlbImp /out:Interop.Excel.dll Excel.exe,提示“Type library imported to Interop.Excel.dll路徑”

     在bin目錄下找到Interop.Excel.dll檔案。在你的visual studio裡將其引用即可。

可以檢視下我的命令E:\func_core7_branch\Coding\product\win32\office6是wps所在的目錄

2、如果是excel2000或excel2002怎麼辦?

如果是Excel2000,則將Excel.exe改成Excel9.olb 
  Excel2002同2003

3、各種版本的引用元件引數如下:

檔案/版本Interop.Excel.dllInterop.Office.dllInterop.VBIDE.dll新增引用\COM元件2000V1.3.0.0V2.1.0.0V5.3.0.0Microsoft Excel 9.0 Object Library(EXCEL9.OLB)2002(xp)V1.4.0.0V2.2.0.0V5.3.0.0Microsoft Excel 10.0 Object Library(Excel.EXE檔案)2003V1.5.0.0V2.3.0.0V5.3.0.0Microsoft Excel 11.0 Object Library(Excel.EXE檔案)

4、困擾我已久的問題:程式智慧切換 不同版本(即可以動態呼叫不同版本)

以ET(即WPS 表格)來舉例,Microsoft Office同理

前提是已安裝wps環境。C#中如果想要呼叫不同版本的ET(Excel),則把指向的路徑更改就行了

登錄檔中定位到如下專案HKEY_CLASSES_ROOT\CLSID\{45540001-5750-5300-4B49-4E47534F4654}

更改子項LocalServer32中名稱為"(預設)"的值比如:E:\func_core7_branch\Coding\product\win32\office6\et.exe /Automation

其中E:\func_core7_branch\Coding\product\win32\office6\et.exe就是你程式要呼叫的ET的版本。

說明:ET的CLSID可能會不一樣,可能不是{45540001-5750-5300-4B49-4E47534F4654} 。只需要

在控制面板\系統和安全\管理工具\組建服務\計算機\我的電腦\DCOM配置找到Kingsoft Spreadsheets Application Class

檢視詳細資訊可看到CLSID。附上我註冊ET的程式碼