c# .net excel vb.net ole

c# - El proveedor ''Microsoft.ACE.OLEDB.12.0'' no está registrado en la máquina local



.net excel (30)

1.) Verifique su cadena de conexión con ConnectionStrings.com .

2.) Asegúrese de tener instalado el motor de base de datos correcto. Estos fueron los dos motores de base de datos que me ayudaron.

Microsoft Access Database Engine 2010 redistribuible

microsoft.com/en-us/download/confirmation.aspx?id=23734

3.) Podría haber un problema con la plataforma de creación de destino que sea "Cualquier CPU", puede que tenga que ser "X86" (Propiedades, Creación, Objetivo de plataforma).

Estoy tratando de obtener datos de un archivo de Excel en un evento de clic de botón. Mi cadena de conexión es:

string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C://source//SiteCore65//Individual-Data.xls;Extended Properties=Excel 8.0;";

Cuando hago clic en el botón, aparece el siguiente error:

El proveedor ''Microsoft.ACE.OLEDB.12.0'' no está registrado en la máquina local.

No tengo ni idea de cómo solucionar este problema. Mi sistema operativo es Windows 7.



Debe cambiar la Plataforma de soluciones de "Cualquier CPU" a "x86" o "x64" según el nivel de bit de la instalación de la oficina.

Los pasos se dan a continuación:

  1. Haga clic derecho en el archivo de solución en el Explorador de soluciones:

    1. Haga clic en el Administrador de configuración.
    2. Haga clic en el menú desplegable Plataforma activa, si x86 ya está allí, seleccione eso, o haga clic en Nuevo.

    3. Seleccione x86 o x64 de la nueva plataforma desplegable:

Compila y ejecuta tu aplicación.


Depende de la oficina que haya instalado, si tiene x64 bit office, debe compilar la aplicación como x64 para permitir que se ejecute, por lo que si desea que se ejecute en x36, debe instalar office x86 para aceptar, lo intenté Todas las soluciones anteriores, pero ninguna funcionó, hasta que me di cuenta de que tenía Office x64bit, así que construí la aplicación como x64 y trabajé.


Dependiendo de la aplicación (32 / 64bit) usando la conexión que podría instalar

Resumen:

  • todas las oficinas de 2007-2016 contienen el proveedor "Microsoft.ACE.Oledb.12.0"
  • Dependiendo de la arquitectura de su aplicación, elija el motor de tiempo de ejecución apropiado (32/64)
  • verifique sus proveedores con el comando powershell desde ambos shell de 32 y 64 bits :

    (New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION

  • y verá qué proveedor puede usar su sistema

la larga historia: las cadenas se pueden encontrar en http://live.sysinternals.com/strings.exe

p.ej. en un sistema de 64 bits con controladores de 32 bits instalados

strings.exe -u -n 10 "c:/Program Files (x86)/Common Files/microsoft shared/OFFICE12/MSO.DLL" | findstr "ACE.O" strings.exe -u -n 10 "c:/Program Files (x86)/Common Files/microsoft shared/OFFICE14/MSO.DLL" | findstr "ACE.O" strings.exe -u -n 10 "c:/Program Files (x86)/Common Files/microsoft shared/OFFICE15/MSO.DLL" | findstr "ACE.O"

incluso en la próxima oficina 2016

c:/Program Files/Microsoft Office/root/VFS/ProgramFilesCommonX64/Microsoft Shared/OFFICE16/MSO.DLL c:/Program Files/Microsoft Office/root/VFS/ProgramFilesCommonX86/Microsoft Shared/OFFICE16/MSO.DLL

encontraras las cuerdas

  • Microsoft.ACE.OLEDB

  • Microsoft.ACE.Oledb.12.0

El Office 2013 viene también con csi.dll

c:/Program Files (x86)/Common Files/microsoft shared/OFFICE15/Csi.dll c:/Program Files/Common Files/Microsoft Shared/OFFICE15/Csi.dll

que contiene el " Microsoft.ACE.OLEDB.15.0 "

y Oficina 2016

c:/Program Files/Microsoft Office/root/VFS/ProgramFilesCommonX64/Microsoft Shared/OFFICE16/Csi.dll c:/Program Files/Microsoft Office/root/VFS/ProgramFilesCommonX86/Microsoft Shared/OFFICE16/Csi.dll

que tiene la versión " Microsoft.ACE.OLEDB.16.0 "


Esto funcionó para mí ahora mismo.

  1. Visite esta página y luego descargue el paquete apropiado para su computadora (AccessDatabaseEngine.exe o AccessDatabaseEngine_X64.exe)
  2. Instala eso.
  3. Enjoye ... Tus códigos es trabajo ahora ...

Pero para su paquete de aplicación puede utilizar cualquiera de las siguientes soluciones:

  1. Vaya a "C: / Archivos de programa (x86) / Archivos comunes / microsoft shared" o "C: / Archivos de programa / Archivos comunes / Microsoft Shared" y coloque el directorio "OFFICE14" en la misma ubicación del archivo de paquete.

O

  1. Adjunte dos proyectos (en item1) en su paquete de instalación.

Instalé los controladores de MS y todavía no funcionó para mí. Luego encontré esta publicación de blog que resolvió el problema. Léalo allí, de lo contrario, use estas dos imágenes (vinculadas desde esa publicación) como el sumario de TLDR:


La forma en que lo resolví en diferentes ordenadores:

Tengo una máquina Windows 7 de 32 bits con Visual Studio 2012 que no tenía la base de datos de Access porque no tengo la Office 2010. Copié la misma fuente que tenía en mi máquina Windows 7 de 64 bits.

Entonces, instalé AccessDatabaseEngine en esta máquina de Windows 7 de 32 bits después de descargarlo según las sugerencias anteriores de otros aquí y todo funcionó bien.

Todavía tenía el problema en mi máquina con Windows 7 de 64 bits que ya tiene Office 2010 que ya incluye Access 2010. La forma en que lo resolví en esta computadora fue ingresando al PROYECTO, Propiedades seleccionadas, y en el objetivo de la plataforma tenía Cualquier CPU que haya marcado Preferido 32 bits. Recompilado / Compilación y el proveedor Microsoft.ACE.OLEDB.12.0 ''no está registrado en el mensaje de la máquina local.


Lo primero que debe verificar es la configuración de compilación de su aplicación.

  • Si ha creado su proyecto bajo la plataforma x86 , para resolver su problema debe instalar los siguientes paquetes en su máquina:

    1. Para utilizar el proveedor ''Microsoft.ACE.OLEDB.12.0'', primero debe instalar Microsoft Access Database Engine 2010 Redistributable , esta instalación está disponible en: http://www.microsoft.com/download/en/details.aspx?id=13255 .

      Una vez completada la instalación, intente ejecutar su aplicación, si esto resuelve el problema, si no, continúe con el paso 2.

    2. Este próximo paso es una solución alternativa inexplicable, que funciona para Office 2010, a pesar de que son los componentes de conectividad de datos de Office 2007. No estoy muy seguro de por qué esto funciona, pero funciona y se ha demostrado que funciona en casi todos los casos. Debe instalar el controlador del sistema de Office 2007: componentes de conectividad de datos , esta instalación está disponible en: http://www.microsoft.com/download/en/confirmation.aspx?id=23734 .

      Una vez completada esta instalación, intente ejecutar su aplicación, esto debería resolver el problema.

  • Si está intentando ejecutar una aplicación desarrollada bajo la plataforma x64 o AnyCPU , recomendaría primero validar que se ejecute como se espera en la plataforma x86. En el caso de que no se ejecute bajo esa plataforma x86, realice los pasos en la primera parte y valide que se ejecute como se esperaba.

    Leí que los controladores de MS Access, incluido el controlador de la base de datos OLEDB, solo funcionan en la plataforma x86 y son incompatibles con la plataforma x64 o AnyCPU. Pero esto parece ser falso. Validé que mi aplicación se estaba ejecutando al compilar x86, luego instalé el motor de base de datos de Access usando la bandera pasiva.

    1. Primero descargue el archivo localmente Puede descargar la instalación aquí: http://www.microsoft.com/en-us/download/details.aspx?id=13255
    2. Instalación utilizando el símbolo del sistema con el indicador ''/ passive''. En el símbolo del sistema, ejecute el siguiente comando: ''AccessDatabaseEngine_x64.exe / passive''

    Después de estos 2 pasos, logré ejecutar mi aplicación después de crear la configuración de compilación de x64 o AnyCPU. Esto pareció resolver mi problema.

Nota: El orden de los pasos parece hacer una diferencia, por lo tanto, siga en consecuencia.


Me enfrenté a este mismo problema. Vaya a las Propiedades de la solución y cambie cualquier CPU a x86, creo que hará el trabajo.


Para todos aquellos que todavía están afectados por esto.

He estado recibiendo el error ...

OLEDB error "The ''Microsoft.ACE.OLEDB.12.0'' provider is not registered on the local machine."

... según lo descrito por el OP, Shailesh Sahu.

Tengo 64 bits de Windows 7.

Mi problema está dentro de los scripts de PowerShell , pero está usando una cadena de conexión, similar a la publicación del OP, por lo que espero que mis hallazgos puedan aplicarse a C #, PowerShell y cualquier otro idioma que dependa del controlador "Microsoft.ACE.OLEDB".

Seguí las instrucciones en este hilo del foro de MS: http://goo.gl/h73RmI

Primero intenté instalar la versión de 64 bits , luego instalé la versión de 32 bits del AccessDatabaseEngine.exe desde esta página http://www.microsoft.com/en-us/download/details.aspx?id=13255

Pero todavía no hay alegría.

Luego ejecuté el código siguiente en PowerShell (del sitio de SQL Panda http://goo.gl/A3Hu96 )

(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION

... lo que me dio este resultado (he eliminado otras fuentes de datos por brevedad) ...

SOURCES_NAME SOURCES_DESCRIPTION ------------ ------------------- Microsoft.ACE.OLEDB.15.0 Microsoft Office 15.0 Access Database Engine OLE DB Provider

Como puedes ver, tengo Microsoft.ACE.OLEDB. 15 .0 (quince) no es Microsoft.ACE.OLEDB. 12 .0 (doce)

Entonces, modifiqué mi cadena de conexión a 15 y funcionó.

Por lo tanto, un fragmento rápido de PowerShell para demostrar cómo codificar la versión ...

$AceVersion = ((New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | Where-Object { $_.SOURCES_NAME -like "Microsoft.ACE.OLEDB*" } | Sort-Object SOURCES_NAME -Descending | Select-Object -First 1 SOURCES_NAME).SOURCES_NAME $connString = "Provider=$AceVersion;Data Source=`"$filepath`";Extended Properties=`"Excel 12.0 Xml;HDR=NO`";"

modificado para elegir la última versión de ACE, si hay más de una

Con suerte, cualquiera que encuentre esto ahora puede verificar qué versión de OLEDB está instalada y usar el número de versión apropiado.


Primero verifique qué versión de microsoft.ace.oledb.12.0 está instalada en su sistema.

Ingrese a continuación la ruta C: / Archivos de programa / Archivos comunes / Microsoft Shared / OFFICE14 / ACEOLEDB.DLL --64 bit está instalado

Verifique la ruta a continuación C: / Archivos de programa (x86) / Archivos comunes / Microsoft Shared / OFFICE14 / ACEOLEDB.DLL --x86 bit está instalado

Si (x86) está instalado, utilice la plataforma de la solución de cambio del administrador de configuración a x86, para x64 cambie a x64.

Si no está disponible, instálalo utilizando el siguiente enlace

https://www.microsoft.com/en-us/download/details.aspx?id=23734


Pude solucionar esto siguiendo los pasos de este artículo: http://www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0-provider-is-not-registered-on-the-local-machine

El punto clave para mí fue este:

Al depurar con IIS,

De forma predeterminada, Visual Studio utiliza la versión de 32 bits. Puede cambiar esto desde dentro de Visual Studio yendo a Herramientas »Opciones» Proyectos y soluciones »Proyectos web» General, y seleccionando

"Utilice la versión de 64 bits de IIS Express para sitios web y proyectos"

Después de marcar esa opción, luego configurar el objetivo de la plataforma de mi proyecto de nuevo a "Cualquier CPU" (lo había configurado en x86 en algún lugar del proceso de solución de problemas), pude superar el error.


Recibí este error / excepción en Visual Studio 2010 cuando cambié mi compilación en el cuadro de diálogo Administrador de configuración de "x86" a "Cualquier CPU". Entiendo que este controlador de base de datos OLEDB solo funciona en x86 y no es compatible con 64 bits. Cambiar la configuración de construcción de nuevo a x86 solucionó el problema por mí.


Recibí este error al importar datos de un archivo de Excel a MS-SQL. El proveedor ya estaba instalado (64 bits) y esto me sorprendió por qué no funcionó. Así que todo lo que hice fue ubicar la aplicación Importar / Exportar utilizada aquí, es decir, el .EXE. Y lo encontré en

C: / Archivos de programa / Microsoft SQL Server / 130 / DTS / Binn / DTSWizard.exe

Luego ejecuté el archivo .exe directamente para realizar la importación de datos. ¡Y funcionó!


Recuerde instalar AccessDatabaseEngine en el servidor para la aplicación web.


Seguí las instrucciones establecidas por otros; instalando este parche, instalando ese parche así como el Microsoft Access Database Engine 2010.

Mi problema fue que estoy usando la misma biblioteca (linq2sql) en 2 sitios en mi máquina; 1 trabaja y 1 no.

Finalmente, encontré que tenía que "habilitar aplicaciones de 32 bits" en la configuración avanzada de la agrupación de aplicaciones para mi sitio que no funciona.

Todo funciona bien ahora.



Si está depurando un proyecto web, solo asegúrese de que IIS Express se esté ejecutando en 32 o 64 bits, según la configuración de su proyecto.

Ir

Herramientas> Opciones> Proyectos y Soluciones> Proyectos Web

y desde allí marque (o desmarque) la ''Usar versión de 64 bits de IIS Express ...''



Si recibe este error cuando intenta utilizar ACE desde una aplicación ASP.NET, la causa más probable es que haya instalado una de las versiones de 32 bits. De forma predeterminada, IIS en un sistema operativo de 64 bits ejecutará aplicaciones en un proceso de trabajo de 64 bits. Los procesos de 64 bits no pueden cargar DLL de 32 bits. Cuando se realiza una llamada al proveedor de ACE, el proceso de 64 bits intentará localizar una DLL de 64 bits. Si no existe, aparece el mensaje de error que te trajo aquí.

En este caso tienes dos opciones. Primero, puedes instalar la versión 2010 de 64 bits. Si tiene instalada la versión de 32 bits de 2007, simplemente puede instalar la versión de 64 bits de 2010 junto con esta. Si tiene instalada la versión de 32 bits de 2010, debe desinstalarla y descargar e instalar la versión de 64 bits de 2010 en su lugar. No puede tener las versiones de 32 y 64 bits del proveedor de 2010 instaladas al mismo tiempo. Si está realizando la instalación en su máquina de desarrollo, es posible que también esté limitado por el bit de las instalaciones de Office existentes.

La segunda opción es cambiar el grupo de aplicaciones en IIS para habilitar aplicaciones de 32 bits. Si está utilizando la versión completa de IIS, puede usar la herramienta de administración para hacerlo (Panel de control »Herramientas administrativas» Administrador de servicios de información de Internet (IIS)).

Para una mayor comprensión por favor consulte el siguiente link



También puedes probar estos pasos.

En el servidor SQL, 1. Abra una base de datos 2. Haga clic en la opción ''Obtención del servidor'' 3. Haga clic en ''Servidores vinculados'' 4.El conflicto en ''Proveedores'' 5. Derecho a la operación en ''Microsoft.ACE.OLEDB.12.0'' 6. Desmarque todas las opciones y cierre.


Tenía Microsoft Access Database Engine 2010 Redistributable ya instalado en mi máquina, pero seguía recibiendo el error del proveedor Microsoft ACE OLEDB .

Luego recordé que me había actualizado a Office 2016 recientemente, así que, quizás debería intentar reinstalar Microsoft Access Database Engine 2010 Redistributable . Y eso solucionó el problema en mi máquina.

Por lo tanto, si ha actualizado a una versión diferente de MS Office o incluso ha reparado / reinstalado MS Office, intente volver a instalar Microsoft Access Database Engine 2010 Redistributable antes de perder tiempo buscando otras soluciones. ¡Buena suerte!


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

Historia del problema:

Recientemente hemos migrado nuestra aplicación de 32 bits a 64 bits debido al requisito de memoria. Para eso migramos nuestras ventanas 7 de 32 bits a 64 bits. Pero aún instalamos oficinas de 32 bits en nuestras máquinas.

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

Solución,

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

AccessDatabaseEngine_x64.exe / pasivo

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

Nota:

En el sistema operativo de 64 bits y en la oficina de 64 bits, mi funcionalidad funcionaba bien sin esta solución. Esta solución solo es necesaria cuando nuestra aplicación funciona con 64 bits en sistemas operativos de 64 bits que tienen instalada una oficina de 32 bits.


Tuve el mismo problema, pero en este caso microsoft-ace-oledb-12-0-provider ya estaba instalado en mi máquina y funcionaba bien para otras aplicaciones desarrolladas.

La diferencia entre esas aplicaciones y la que tenía el problema era que las aplicaciones antiguas se ejecutaban en " IIS local ", mientras que la que tenía el error estaba en " IIS Express (ejecutándose desde Visual Studio"). Así que lo que hice fue ...

  1. Haga clic derecho sobre el nombre del proyecto.
  2. Ir a propiedades
  3. Ir a la pestaña web a la derecha.
  4. En Servidores, seleccione IIS local y haga clic en el botón Crear directorio virtual.
  5. Ejecutar la aplicación de nuevo y funcionó.


Una versión de 64 bits de ''Microsoft Access Database Engine 2010 Redistributable'' que le permitirá usar el proveedor ''Microsoft.ACE.OLEDB.12.0'' está disponible aquí:
http://www.microsoft.com/en-us/download/details.aspx?id=13255

Si usa la descarga de la respuesta aceptada, deberá compilar para x86, como lo indica @ backtestbroker.com.


syp_dino,

La solución para mí como sugirió para el proveedor "Microsoft.ACE.OLEDB.12.0 ''no está registrada en la máquina local" el error es cambiar la Plataforma de soluciones activas de "Cualquier CPU" a "x86".

Cuando realicé esos pasos, reconstruí la solución, cogí el EXE y lo coloqué en la red, todo funcionó sin problemas en la máquina de Windows 7 de 64 bits.


  • He estado enfrentando el mismo problema durante días. Instalé los controladores OLEDB para 64 bits, también probé 32 bits, que están disponibles en el sitio web de Microsoft.
  • Intenté reinstalar la versión de Office de 64 bits, pero de alguna manera no funcionó. Intentado Permitir la aplicación de 32 bits en el grupo IIS verdadero.
  • Se intentó cambiar el entorno del proyecto a X86, AnyMachine, Mixed. Y casi probé todos los parches que pude encontrar en internet. Pero todas las soluciones me decepcionaron.
  • Aunque finalmente llegué a saber que el proveedor que estábamos descargando era el último y tampoco estaba trabajando con él.
  • Lo desinstalé e instalé los controladores Oledb 14.0.7015.1000 . No tengo el enlace, ya que lo obtuve de los recursos de la empresa, es posible que tenga que buscarlo en Google, pero funciona. Llegué a este ENLACE DE DESCARGA de microsoft y también funcionó ... sin embargo, es la versión 14.0.6119.5000 pero funcionó.