今天批量導入號碼功能已經放到荷蘭去測試了
結果歐洲的PM一測就出了問題
未在本地計算機上注冊“Microsoft.ACE.OLEDB.12.0”
顯然這是程序未能正確調用office的oledb數據連接驅動造成的。
之前做BS項目的時候,這個問題已經碰到很多次了,解決方案很簡單
1裝office
2裝office 也還是報錯的話,就單獨安裝一個AccessDatabaseEngine.exe
3在網站的應用程序池中,“設置應用程序池默認屬性”右擊/“高級設置”/;啟用32位應用程序,設置為 true。
於是我進行第一步第二步,結果依然報錯。
仔細分析了一下,由於現在我做的是Winform客戶端,而讀Excel代碼是客戶端的程序,所以顯然不需要設置第三步。
那么為什么安裝AccessDatabaseEngine.exe依然會報這個錯誤呢?是系統版本造成的不兼容問題嗎?
查看了一下系統版本,x64,而我裝的office為x86版本的,AccessDatabaseEngine.exe也是x86版本的。
所以大概是版本不兼容導致調用失敗。
卸載了x86的office,重新裝一個x64版本的AccessDatabaseEngine.exe,問題就解決了。
以前BS項目,之所以可以裝任意版本的AccessDatabaseEngine.exe,是因為在應用程序池中可以調用x86版本的Oledb驅動,
但正因為CS架構的程序客戶端進程不在IIS下運行,所以“啟用32位應用程序”沒辦法設置。解決辦法目前只能是讓客戶選擇使用正確版本的office了。
但如果能有辦法讓程序可以在x64的系統運行時正確調用“32位應用程序”,這才是這個問題最完美的解決方法。
如果有這樣的解決方案,我會繼續跟蹤這個問題的。
以下內容為后續解決方案
————————————————————————————————————————————————————————————————————————————————————————
http://blog.sina.com.cn/s/blog_41616cb50101a11w.html
http://blog.csdn.net/rnhhb/article/details/8833100
以上文章為參考文章。
簡單來說,首選的解決方案是在編譯程序的時候,不編譯為AnyCPU而編譯為x86的版本。
不過如此一來,程序就無法利用x64系統的資源優勢了。
第二個鏈接給出的是在x64系統下,已經安裝了x86的office而無法繼續安裝x64的AccessDatabaseEngine的解決方案。
操作雖稍復雜但是也是可行的,比起把x32的office卸載再重新裝x64的office還是省時省力得多