![](/img/trans.png)
[英]The 'Provider=Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine
[英]The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine while data export to MS ACCESS
我是使用 Microsft.ACE.OLEDB 12.0 的初學者。 我創建了一個 Winforms 應用程序 VS 2010。
並創建將數據網格數據導出到 MS Access 文件的功能。 我使用 Microsoft Oledb
用於將數據網格數據導出到 MS Access 文件。但是當我嘗試導出時出現此錯誤
的
數據到ms訪問。
請看下圖。
我還在我的應用程序中引用了Microsoft.Office 12.0 對象庫。
批量構建配置
對Access Interop
位的引用與您的異常無關,訪問互操作不需要使用System.Data.OleDb
的類。
當您為AnyCPU Platform
編譯您的應用程序,您在 64 位系統上運行並且安裝的 ADO.NET 提供程序 (Microsoft ACE.OLEDB.12.0) 是 32 位版本時,就會出現問題。
使用AnyCpu
目標平台時,您的代碼將在 64 位系統上作為 64 位代碼執行,在 32 位系統上作為 32 位代碼執行。 作為 64 位執行的應用程序不能使用 32 位驅動程序(反之亦然)。 現在添加一個事實,即 Microsoft.ACE.OLEDB.12.0 有兩個不同的版本。 一個用於 64 位,一個用於 32 位,它們不能一起安裝在同一台機器上。
最簡單的解決方法是通過 Visual Studio 菜單更改應用程序的目標平台
BUILD -> Configuration Manager -> Active Solution Platform -> x86
如果x86
選項尚不存在,則選擇 NEW,將其命名為x86
, Copy Settings from AnyCPU
並選中Create new project platforms
如果您認為在 64 位操作系統上使用 32 位應用程序會導致性能損失或需要避免的事情,那么請三思並閱讀此參考資料,其中對 AnyCpu 的優點和缺點進行了嚴格檢查。 如果您沒有使用AnyCpu
的特定原因,最好繼續使用x86
。
當然,另一種選擇是卸載 32 位版本並 從此處安裝 64 位版本的 ACE,然后在 64 位系統上將應用程序作為 AnyCpu 運行。 但這對於您的部署場景來說可能是一場噩夢。 如果您的 x64 目標機器上安裝了 Microsoft Office 32 位版本怎么辦? Office 安裝了它的位兼容版本的 ACE,並且如上所述,不可能在同一台機器上安裝 32 位和 64 位的 ACE。
現在,您還應該要求您的客戶將 Office 重新安裝為 64 位,以使您的 64 位應用程序滿意。
更改其應用程序池“高級設置”以允許運行 32 位程序......這對我來說是這樣做的。
當我們閱讀 Excel 文件時,我遇到了類似的問題。
問題歷史:
由於內存要求,我們最近將應用程序從 32 位遷移到 64 位。 為此,我們將 Windows 7 從 32 位遷移到 64 位。 但是我們仍然在我們的機器上安裝了 32 位 Office。
因為,因此我們在將 Excel 數據導入應用程序時遇到了這個問題。
解決方案,
我下載了http://www.microsoft.com/en-us/download/details.aspx?id=13255 的64 位版本並使用參數安裝,
AccessDatabaseEngine_x64.exe /passive
沒有任何代碼更改我的問題得到解決。
筆記:
在 64 位操作系統和 64 位辦公室上,我的功能在沒有此修復程序的情況下運行良好。 僅當我們的應用程序在 64 位操作系統上運行 64 位時才需要此修復,該操作系統上安裝了 32 位辦公室。
基本方式:
應用程序: MVC C#
,對於 Win Server 64 位:
刪除所有安裝的 office 32 位。
下載鏈接: https : //www.microsoft.com/en-us/download/details.aspx?id=13255
選擇下載64位然后安裝到服務器(如果你不能安裝程序,請重新檢查1點)。
重試再次訪問您的應用程序。 在此處輸入圖片說明
對我來說,安裝 Microsoft Access Database Engine 2010 Redistributable 解決了 32 位版本的問題。
就我而言
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.