x64 registrado proveedor office microsoft está equipo datos controlador conectividad componentes c# winforms ms-access office-2007 winforms-interop

c# - office - El proveedor ''Microsoft.ACE.OLEDB.12.0'' no está registrado en la máquina local mientras se exportan datos a MS ACCESS



microsoft.ace.oledb.12.0 office 2013 (5)

Cambiar en su conjunto de aplicaciones ''configuración avanzada'' para permitir ejecutar programas de 32 bits ... eso lo hizo por mí.

Soy un principiante en el uso de Microsft.ACE.OLEDB 12.0. Creo una aplicación Winforms VS 2010.

Y cree una función para exportar datos de cuadrícula de datos al archivo de MS Access. Estoy usando Microsoft Oledb

para exportar los datos de la cuadrícula de datos al archivo de MS Access. Pero obtengo este error cuando intento exportar

el

datos a ms acceso.

Por favor mira la imagen de abajo.

También remito la Biblioteca de objetos Microsoft.Office 12.0 en mi aplicación.

Configuración de compilación por lotes

Por favor ayuda.


Tengo un problema similar cuando estamos leyendo un archivo de Excel.

Historia del problema:

Recientemente migramos nuestra aplicación de 32 bits a 64 bits debido a los requisitos de memoria. Para eso migramos nuestras ventanas 7 de 32 bits a 64 bits. Pero aún así, instalamos una oficina de 32 bits en nuestras máquinas.

porque, de esto, tuvimos este problema al importar datos de Excel a la aplicación.

Solución,

Descargué la versión de 64 bits de http://www.microsoft.com/en-us/download/details.aspx?id=13255 y la instalé con un argumento como,

AccessDatabaseEngine_x64.exe / pasivo

Sin ningún cambio de código mi problema se resuelve.

Nota:

En sistemas operativos de 64 bits y de 64 bits, mi funcionalidad funcionaba bien sin esta solución. Esta solución solo es necesaria mientras nuestra aplicación se ejecuta en 64 bits en un sistema operativo de 64 bits que tiene instalada una oficina de 32 bits.


para mí, la instalación de Microsoft Access Database Engine 2010 Redistributable solucionó el problema, la versión de 32 bits.



La referencia a los bits de Access Interop no tiene nada que ver con su excepción y no es necesario utilizar Interoperabilidad para utilizar las clases en System.Data.OleDb .

El problema surge cuando tiene su aplicación compilada para AnyCPU Platform , se está ejecutando en un sistema de 64 bits y el proveedor ADO.NET instalado (Microsoft ACE.OLEDB.12.0) es la versión de 32 bits.

Al utilizar la Plataforma de destino AnyCpu , su código se ejecutará como código de 64 bits en sistemas de 64 bits y como código de 32 bits en sistemas de 32 bits. Una aplicación ejecutada como 64 bits no puede usar controladores de 32 bits (y viceversa). Ahora agregue a la combinación el hecho de que Microsoft.ACE.OLEDB.12.0 tiene dos versiones diferentes. Una para 64bit y otra para 32 bits y no se pueden instalar juntas en la misma máquina.

La solución más simple es cambiar la plataforma de destino de su aplicación a través del menú de Visual Studio

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

Si la opción x86 no está allí, seleccione NUEVA, Copy Settings from AnyCPU nombre x86 , Copy Settings from AnyCPU y marque Create new project platforms

Si cree que usar una aplicación de 32 bits en un sistema operativo de 64 bits es una pérdida de rendimiento o algo que debe evitarse, piénselo dos veces y lea esta referencia donde se examinan críticamente los PRO y CONS de AnyCpu. Si no tiene un motivo específico para usar AnyCpu , es mejor quedarse con x86 .

Por supuesto, otra opción es desinstalar la versión de 32 bits e instalar la versión de 64 bits de ACE desde aquí y luego ejecutar su aplicación como AnyCpu en sistemas de 64 bits. Pero esto podría ser una pesadilla para sus escenarios de implementación. ¿Qué pasa si la versión de 32 bits de Microsoft Office está instalada en su máquina de destino x64? Office instala su versión bit de ACE y, como se dijo, no es posible tener 32 bits y 64 bits de ACE instalados en la misma máquina.
Ahora también debería pedirle a su cliente que reinstale Office como 64 bits para mantener su aplicación de 64 bits feliz.

ACTUALIZAR


La situación ha cambiado un poco con las versiones más nuevas de Visual Studio. Ahora hay una nueva opción que es la predeterminada para nuevos proyectos. Se llama AnyCPU Prefer 32bit mode . Más detalles en este enlace: Lo que AnyCPU significa realmente a partir de .NET 4.5 y Visual Studio 11 y otra publicación interesante (aunque con respecto al Sql Server Compact) es este El problema con Any CPU-Prefer 32 bit-BadImageFormatException