一個叫openaspx的網(wǎng)站真的是相當(dāng)無恥,抄襲的赤裸裸連出處都不注明。開源不等于偷竊!
一個系統(tǒng)有個導(dǎo)入Excel數(shù)據(jù)到datatable的功能, 在測試環(huán)境中, 某天業(yè)務(wù)人員測試的時候發(fā)現(xiàn)導(dǎo)入不成功了. 提示"Could not find installable ISAM"(英文操作系統(tǒng),中文可能為"找不到可安裝的ISAM").
在網(wǎng)上找了很多資料, 一般都是連接串寫錯了, 比如DataSource兩個單詞連在一起, 應(yīng)該是Data Source; 或者Extended Properties的值需要加上引號;或缺少分號. 詳細(xì)可以參考[1]
但是這個系統(tǒng)的源代碼很長時間沒有修改,之前也用的好好的. 懷疑是office的問題. 經(jīng)查發(fā)現(xiàn)office 2003給卸載了(因?yàn)橛蒙蟧ffice 2010了), 是不是需要安裝Excel 2003呢? 但是按理說Excel 2010應(yīng)該向前兼容的, 微軟也沒必要去除啊.
后來看到[2], 突然想起會不會是因?yàn)樾遁doffice 2003導(dǎo)致注冊表出錯? 于是按照[2]的方法重新手工注冊了關(guān)鍵的幾個dll, 一試果然行了. 看樣子[2]也是轉(zhuǎn)載微軟幫助文檔. 另外, 下面提及的幾個dll, 均不是安裝office才有的, windows系統(tǒng)自帶, 如果沒有, 可以到系統(tǒng)盤下搜索"40.dll", 可以發(fā)現(xiàn)在系統(tǒng)盤下的WINDOWS\ServicePackFiles\i386目錄下就有這些文件, 拷貝到system32下再注冊即可. 我測試發(fā)現(xiàn)Excel的話一般注冊以下幾個dll即可: Msexcl40.dll, Msexch40.dll,Msrd2x40.dll, Msrd3x40.dll.
問題描述:
在 Access 或Sql Server中收到“Could not find installable ISAM”(找不到可安裝的 ISAM)錯誤信息或者丟失某些文件類
解決方法:
1.注冊表編輯器使用不當(dāng)可能導(dǎo)致嚴(yán)重問題,可能需要重新安裝操作系統(tǒng)。Microsoft 不能保證您可以解決因注冊表編輯器使用不當(dāng)而導(dǎo)致的問題。使用注冊表編輯器需要您自擔(dān)風(fēng)險。要解決此問題,您可以嘗試手動注冊此文件,或者必須更正 Windows 注冊表中的路徑名稱錯誤,然后安裝或替換問題文件。為此,請按照下列步驟操作。
注意:在“癥狀”一節(jié)中提到的錯誤信息 1 中,此文件名直接與嘗試的操作相關(guān)聯(lián)。在“癥狀”一節(jié)中提到的錯誤信息 2 中,此文件名在該信息的文本中提到。
1. 在下表中找到相關(guān)的文件:
文件名 導(dǎo)入/導(dǎo)出 ISAM: Windows 注冊表
Msexcl40.dll Microsoft Excel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
Msexch40.dll Microsoft Exchange HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Exchange
Msrd2x40.dll Microsoft Jet 2.x HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 2.x
Msrd3x40.dll Microsoft Jet 3.x HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 3.x
Msltus40.dll Lotus 1-2-3 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Lotus
Mspbde40.dll Imprise Paradox HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Paradox
Mstext40.dll Text HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text
Msxbde40.dll dBase HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase
2. 使用 Microsoft Windows 資源管理器搜索文件。
3. 如果找到此文件,請記下此文件的路徑名稱。如果找不到此文件,請轉(zhuǎn)至步驟 13。
4. 打開 Windows 注冊表編輯器。
5. 找到此表中描述的注冊表子項(xiàng),然后按照實(shí)際的路徑名稱檢查此路徑名稱。如果此注冊表項(xiàng)不存在,請轉(zhuǎn)至步驟 8。
6. 如果路徑錯誤,更正此路徑。如果路徑正確,繼續(xù)執(zhí)行這些步驟。
7. 關(guān)閉注冊表編輯器。
如果更改了此路徑,請重復(fù)產(chǎn)生最初錯誤的過程。
8. 如果錯誤仍然存在,請使用 Regsvr32.exe 實(shí)用工具手動注冊此文件。
Regsvr32.exe 實(shí)用工具是用于在 Windows 注冊表中注冊 DLL 和 ActiveX 控件的應(yīng)用程序。您可以使用此文件解決錯誤匹配的 .dll 文件的問題。要使用 Regsvr32.exe 實(shí)用工具重新注冊 .dll 文件,請轉(zhuǎn)至下一步。
9. 驗(yàn)證 Regsvr32.exe 文件是否位于裝有 Windows 的系統(tǒng)文件夾中。
例如,Regsvr32.exe 文件通常位于 C:\Windows\System 或 C:\Winnt\System32 中。
10. 單擊“開始”,然后單擊“運(yùn)行”。
11. 在“運(yùn)行”對話框中,在“打開”框中鍵入以下命令。
注意:Regsvr32.exe 的路徑和 DLL 的名稱和路徑在計(jì)算機(jī)中可能有些不同。以下命令可注冊 Excel ISAM:
Regsvr32 c:\winnt\system32\msexcl40.dll
注意:注冊 DLL 的另一種方法是使用 Windows 資源管理器找到 DLL。
雙擊此 DLL。在“打開方式”對話框中,單擊“Regsvr32.exe”,然后單擊“確定”。
這會創(chuàng)建所有 DLL 與 Regsvr32.exe 的永久關(guān)聯(lián)。您可以雙擊其他未注冊的 DLL,來注冊這些 DLL。
有關(guān)如何獲得此文件的其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應(yīng)的文章:
267279 (http://support.microsoft.com/kb/267279/) Regsvr32.exe 可從下載中心下載
12. 如果錯誤仍然存在,或者已經(jīng)在步驟 5 中更正了路徑名稱,請重命名此文件。
13. 啟動“添加/刪除程序”工具,啟動 Office 2000 安裝程序,然后單擊“修復(fù) Office”。
另外, [3]也有提及導(dǎo)入注冊表的方法, 但因不知道是那些dll的注冊表, 服務(wù)器上不敢亂試. 轉(zhuǎn)帖如下:
這個問題困擾了我二個月
在delphi 7 裏ADO連jet oledb 4.0 用的好好的,會突然就出現(xiàn)
"Microsoft.Jet.Oledb.4.0 找不到提供者或未安裝"
而今天在vm裏比對過oledb 4.0的登錄機(jī)碼後發(fā)現(xiàn)有兩個機(jī)碼消失了
可能是什麼系統(tǒng)優(yōu)化的軟體搞的吧,在補(bǔ)上後jet 4.0就回來了....
以下是缺少的登錄資料
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{dee35071-506b-11cf-b1aa-00aa00b8de95}]
@="Microsoft Jet 4.0 OLE DB Provider Error Lookup"
[HKEY_CLASSES_ROOT\CLSID\{dee35071-506b-11cf-b1aa-00aa00b8de95}\InprocServer32]
@="C:\\WINDOWS\\system32\\msjetoledb40.dll"
"ThreadingModel"="Both"
[HKEY_CLASSES_ROOT\CLSID\{dee35071-506b-11cf-b1aa-00aa00b8de95}\ProgID]
@="Microsoft.Jet.OLEDB.ErrorLookup.4.0"
[HKEY_CLASSES_ROOT\CLSID\{dee35071-506b-11cf-b1aa-00aa00b8de95}\VersionIndependentProgID]
@="Microsoft.Jet.OLEDB.ErrorLookup"
[HKEY_CLASSES_ROOT\CLSID\{dee35070-506b-11cf-b1aa-00aa00b8de95}]
@="Microsoft.Jet.OLEDB.4.0"
"OLEDB_SERVICES"=dword:fffffffe
[HKEY_CLASSES_ROOT\CLSID\{dee35070-506b-11cf-b1aa-00aa00b8de95}\ExtendedErrors]
@="Microsoft Jet 4.0 OLE DB Provider Error Lookup"
[HKEY_CLASSES_ROOT\CLSID\{dee35070-506b-11cf-b1aa-00aa00b8de95}\ExtendedErrors\{dee35071-506b-11cf-b1aa-00aa00b8de95}]
@="Microsoft Jet 4.0 OLE DB ProviderError Lookup"
[HKEY_CLASSES_ROOT\CLSID\{dee35070-506b-11cf-b1aa-00aa00b8de95}\InprocServer32]
@="C:\\WINDOWS\\system32\\msjetoledb40.dll"
"ThreadingModel"="Both"
[HKEY_CLASSES_ROOT\CLSID\{dee35070-506b-11cf-b1aa-00aa00b8de95}\OLE DB Provider]
@="Microsoft Jet 4.0 OLE DB Provider"
[HKEY_CLASSES_ROOT\CLSID\{dee35070-506b-11cf-b1aa-00aa00b8de95}\ProgID]
@="Microsoft.Jet.OLEDB.4.0"
[HKEY_CLASSES_ROOT\CLSID\{dee35070-506b-11cf-b1aa-00aa00b8de95}\VersionIndependentProgID]
@="Microsoft.Jet.OLEDB"
有一樣問題的就試一下吧
存成reg檔,再滙入看看是不是解決了這個問題
參考文檔:
[1]http://www.cnblogs.com/zyc2/articles/182492.html
[2]http://www.cnblogs.com/zgqys1980/archive/2010/11/23/1885661.html
[3]http://www.cnblogs.com/dotneter/archive/2008/11/28/1343132.html
聯(lián)系客服