Il provider ‘Microsoft.ACE.OLEDB.12.0’ non è registrato sul computer locale durante l’esportazione dei dati in MS ACCESS

Sono principiante nell’uso di Microsft.ACE.OLEDB 12.0. Creo un’applicazione Winforms VS 2010.

E creare una funzione per esportare i dati della griglia di dati nel file MS Access. Sto usando Microsoft Oledb

per esportare i dati della griglia di dati nel file MS Access. Ma ottengo questo errore quando provo ad esportare

il

accesso dati a ms.

Si prega di vedere l’immagine qui sotto.

inserisci la descrizione dell'immagine qui

Mi riferisco anche alla libreria di oggetti Microsoft.Office 12.0 nella mia applicazione.

inserisci la descrizione dell'immagine qui

Configurazione di compilazione batch

inserisci la descrizione dell'immagine qui

Il riferimento ai bit di Access Interop non ha nulla a che fare con l’eccezione e Access Interop non è necessario per utilizzare le classi in System.Data.OleDb .

Il problema sorge quando l’applicazione è compilata per AnyCPU Platform , si esegue su un sistema a 64 bit e il provider ADO.NET installato (Microsoft ACE.OLEDB.12.0) è la versione a 32 bit.

Quando si utilizza la piattaforma di destinazione AnyCpu il codice verrà eseguito come codice a 64 bit su sistemi a 64 bit e come codice a 32 bit su sistemi a 32 bit. Un’applicazione eseguita a 64 bit non può utilizzare driver a 32 bit (e viceversa). Ora aggiungi al mix il fatto che Microsoft.ACE.OLEDB.12.0 ha due diverse versioni. Uno per 64 bit e uno per 32 bit e non possono essere installati insieme sullo stesso computer.

La soluzione più semplice consiste nel modificare la piattaforma di destinazione dell’applicazione tramite il menu di Visual Studio

  BUILD -> Configuration Manager -> Active Solution Platform -> x86 

Se l’opzione x86 non è già lì, quindi selezionare NUOVO, denominarlo x86 , Copy Settings from AnyCPU e selezionare Create new project platforms

Se pensate che l’uso di un’app a 32 bit su un sistema operativo a 64 bit sia una perdita di prestazioni o qualcosa da evitare, pensateci due volte e leggete questo riferimento dove vengono esaminati criticamente PRO e CONS di AnyCpu. Se non hai una ragione specifica per usare AnyCpu , è meglio rimanere con x86 .

Naturalmente, un’altra opzione è quella di disinstallare la versione a 32 bit e installare la versione a 64 bit di ACE da qui e quindi eseguire l’applicazione come AnyCpu su sistemi a 64 bit. Ma questo potrebbe essere un incubo per i tuoi scenari di distribuzione. Cosa succede se la versione di Microsoft Office 32 bit è installata sul computer di destinazione x64? Office installa la sua versione di ACE compatibile con bit e, come detto, non è ansible installare ACE a 32 bit e 64 bit sulla stessa macchina.
Ora dovresti anche chiedere al cliente di reinstallare Office come 64 bit per mantenere la tua app 64 bit felice.

AGGIORNARE

La situazione è leggermente cambiata con le versioni più recenti di Visual Studio. Ora c’è una nuova opzione che è l’impostazione predefinita per i nuovi progetti. Si chiama AnyCPU Prefer modalità a 32 bit . Maggiori dettagli a questo link: Ciò che AnyCPU significa veramente come .NET 4.5 e Visual Studio 11 e un altro post interessante (anche se riguarda Sql Server Compact) è questo Il problema con Any CPU-Prefer 32 bit-BadImageFormatException

Modifica delle impostazioni avanzate del pool di app per consentire l’esecuzione di programmi a 32 bit … che l’ho fatto per me.

Ho un problema simile quando stiamo leggendo il file di Excel.

Storia del problema:

Recentemente abbiamo migrato la nostra applicazione da 32-bit a 64-bit a causa dei requisiti di memoria. Per questo abbiamo migrato il nostro Windows 7 da 32-bit a 64-bit. Ma abbiamo ancora installato un ufficio a 32 bit sulle nostre macchine.

perché di questo abbiamo riscontrato questo problema durante l’importazione dei dati di Excel nell’applicazione.

Soluzione,

Ho scaricato la versione a 64 bit del http://www.microsoft.com/en-us/download/details.aspx?id=13255 e installato con argomento come,

AccessDatabaseEngine_x64.exe / passivo

Senza alcun codice, il mio problema viene risolto.

Nota:

Su sistemi operativi a 64 bit e uffici a 64 bit, la mia funzionalità funzionava correttamente senza questa correzione. Questa correzione è necessaria solo mentre la nostra applicazione è in esecuzione a 64 bit su sistema operativo a 64 bit che dispone di un ufficio a 32 bit installato.

Modo base:

Applicazione: MVC C# , per Win Server 64 bit:

  1. Rimuovi tutti i 32 bit dell’ufficio installati.

  2. Link per il download: https://www.microsoft.com/en-us/download/details.aspx?id=13255

  3. selezionare download 64 bit e installarlo sul server (se non è ansible impostare il programma, ricontrollare 1 punto).

  4. riprovare ad accedere nuovamente alla tua applicazione. inserisci la descrizione dell’immagine qui

per me l’installazione di Microsoft Access Database Engine 2010 Redistributable ha risolto il problema, la versione a 32 bit.