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的程式碼