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 idea de cómo solucionar esto. Mi sistema operativo es Windows 7.
execute master.dbo.xp_enum_oledb_providers
le dice qué hay en el servidor, no en su máquina local .Respuestas:
Bueno, necesitas instalarlo. Estas buscando:
fuente
2007 Office System Driver: Data Connectivity Components
resolvió el problema de inmediato.Una versión de 64 bits del '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 utiliza la descarga de la respuesta aceptada, deberá compilar para x86, como lo señala @ backtestbroker.com.
fuente
dependiendo de la aplicación (32/64 bits) usando la conexión que podría instalar
Resumen:
verifique a sus proveedores con el comando powershell desde el shell de 32 y 64 bits :
y verá qué proveedor puede usar su sistema
la larga historia: las cadenas se pueden encontrar con http://live.sysinternals.com/strings.exe
p.ej. en un sistema de 64 bits con controladores de 32 bits instalados
incluso en la próxima oficina 2016
encontrarás las cuerdas
Microsoft.ACE.OLEDB
Microsoft.ACE.Oledb.12.0
Office 2013 también viene con csi.dll
que contiene el " Microsoft.ACE.OLEDB.15.0 "
y Office 2016
que tiene la versión " Microsoft.ACE.OLEDB.16.0 "
fuente
Get-OdbcDriver | select Name,Platform
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:
Para utilizar el proveedor 'Microsoft.ACE.OLEDB.12.0' , primero debe instalar el 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.
El siguiente paso es una solución inexplicable, que funciona para Office 2010, aunque son los Componentes de conectividad de datos de Office 2007. No estoy muy seguro de por qué funciona, pero funciona y se ha demostrado que funciona en casi todos los casos. Debe instalar el controlador de 2007 Office System: 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 creada bajo x64 o la plataforma AnyCPU , recomendaría primero validar que se ejecuta como se esperaba bajo la plataforma x86. En el caso de que no se ejecute en 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 base de datos OLEDB, funcionan solo en la plataforma x86 y son incompatibles en 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.
Después de estos 2 pasos, logré ejecutar mi aplicación después de compilar en x64 o la configuración de compilación de AnyCPU. Esto pareció resolver mi problema.
Nota: El orden de los pasos parece marcar la diferencia, así que sígalo en consecuencia.
fuente
AceRedist.msi /passive
.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 compilación a x86 me resolvió el problema.
fuente
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 resumen de TLDR:
fuente
Si está utilizando 64 bits pero aún tiene problemas incluso después de instalar AccessDatabaseEngine, vea esta publicación , me resolvió el problema.
es decir, necesita instalar este AccessDatabaseEngine
fuente
Para todos aquellos aún afectados por esto.
He estado recibiendo el error ...
... 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 se puedan aplicar a C #, PowerShell y cualquier otro lenguaje que se base en el 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 de 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 siguiente código en PowerShell (desde el sitio de SQL Panda http://goo.gl/A3Hu96 )
... lo que me dio este resultado (he eliminado otras fuentes de datos por brevedad) ...
Como puede ver, tengo Microsoft.ACE.OLEDB. 15 .0 (quince) no 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 en software ...
modificado para elegir la última versión de ACE, si hay más de una
Con suerte, cualquiera que encuentre esto ahora puede verificar para ver qué versión OLEDB está instalada y usar el número de versión apropiado.
fuente
Aunque se han dado muchas respuestas, el problema que encontré aún no se mencionó.
La instalación del instalador AccessDatabaseEngine.exe de 32 bits como se descargó de MS informa que fue exitosa, pero NO está instalada, como se verifica con el Script Powershell de una de las publicaciones anteriores aquí.
La instalación del instalador de 64 bits AccessDatabaseEngine_X64.exe informó un impactante mensaje de error:
La solución muy simple se ha encontrado aquí en un sitio de Autodesk. Simplemente agregue el parámetro / pasivo a la cadena de línea de comandos, así:
Instalación exitosa, el controlador OleDb funcionó.
Los archivos de Excel que estoy procesando con OleDb son de tipo xlsx, producidos con EPPlus 4.5 y modificados con Excel 2007.
fuente
Debe cambiar la Plataforma de soluciones de "Cualquier CPU" a "x86" o "x64" en función de la instalación de Office.
Los pasos se dan a continuación:
Haga clic derecho en el archivo de solución en el Explorador de soluciones:
Haga clic en el menú desplegable Active Platform, si x86 ya está allí, selecciónelo; de lo contrario, haga clic en Nuevo.
Seleccione x86 o x64 del nuevo menú desplegable de la plataforma:
Compila y ejecuta tu aplicación.
fuente
Si el "AccessDatabaseEngine" instalado aún no ayuda, a continuación hay una solución:
Debe cambiar la Plataforma de solución activa de "Cualquier CPU" a "x86".
El proveedor OLEDB no está registrado en la máquina local
Desde CodeProject.com
fuente
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- en la máquina local
El punto clave para mí fue este:
Al depurar con IIS,
"Utilice la versión de 64 bits de IIS Express para sitios web y proyectos"
Después de marcar esa opción, luego de 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.
fuente
Si está depurando un proyecto web, asegúrese de que IIS Express se ejecute en 32 o 64 bits, según la configuración de su proyecto.
Ir
y a partir de ahí, marque (o desmarque) la opción 'Usar la versión de 64 bits de IIS Express ...'
fuente
Primero verifique qué versión de microsoft.ace.oledb.12.0 está instalada en su sistema.
Verifique debajo de la ruta C: \ Archivos de programa \ Archivos comunes \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL --64 bit está instalado
Verifique debajo de la ruta C: \ Archivos de programa (x86) \ Archivos comunes \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL --x86 bit está instalado
Si (x86) está instalado, utilizando el administrador de configuración, cambie la plataforma de la solución a x86, para x64 cambie a x64.
Si no está disponible, instálelo utilizando el siguiente enlace
https://www.microsoft.com/en-us/download/details.aspx?id=23734
fuente
syp_dino,
La solución para mí, como usted sugirió para el error "Microsoft.ACE.OLEDB.12.0 'el proveedor no está registrado en la máquina local", es cambiar la Plataforma de Solución Activa de "Cualquier CPU" a "x86".
Cuando realicé esos pasos, reconstruí la solución, agarré el EXE y lo coloqué en la red, todo funcionó sin problemas en la máquina con Windows 7 de 64 bits.
fuente
Tuve este problema al intentar importar datos de un archivo de Excel (xlsx) en una base de datos de SQL Server usando SSMS 2014.
El controlador de 2007 Office System: la instalación de los componentes de conectividad de datos me sirvió.
fuente
Me enfrenté a este mismo problema. Vaya a Propiedades de la solución y cambie cualquier CPU a x86, creo que hará el trabajo.
fuente
haga esto 2 pasos: 1. en este menú: proyecto -> las propiedades de su proyecto ... -> Generar: desmarque "preferir 32 bits" 2. en connectionString: escriba las comillas antes y después de las propiedades extendidas, de esta manera: Propiedades extendidas = ' Excel 12.0 Xml; HDR = SÍ '
fuente
Estas configuraciones funcionaron en enero de 2020 en la construcción de mi nueva máquina:
(1 - solo x64) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 instalado con / argumento pasivo, configuración de compilación de VStudio establecida en x64 explícitamente, con la siguiente cadena de conexión: Proveedor = Microsoft.ACE.OLEDB.16.0; Fuente de datos = D: ... \ MyDatabase.accdb
(2 - x64 o x32) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 instalado con / argumento pasivo, PLUS AccessDatabaseEngine 2010 (32 bits) instalado con / argumento pasivo, configuración de compilación de VStudio establecida en AnyCPU, con la siguiente cadena de conexión: Proveedor = Microsoft.ACE.OLEDB.16.0; Fuente de datos = D: ... \ MyDatabase.accdb
(3 - x32 solamente) Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32bit) instalado con / argumento pasivo, configuración de compilación de VStudio establecida en x86, con la siguiente cadena de conexión: Proveedor = Microsoft.ACE.OLEDB.12.0; Fuente de datos = D: ... \ MyDatabase.accdb
NOTAS DE FALLO
El uso del proveedor ACE.OLEDB.12.0 x64 en la cadena de conexión falló con solo AccessDatabaseEngine_x64 2016 instalado como se indicó anteriormente en (1).
El uso de AnyCPU en la configuración de creación de Visual Studio falló en (1) Se requiere configurar x64. Tal vez esto se deba a que AnyCPU significa que Vstudio debe ver un proveedor x32 ACE.OLEDB.nn.0 en tiempo de compilación.
El motor ACE.OLEDB.12.0 2016 x32 / pasivo NO se instalaría cuando viera aplicaciones x64. (El instalador pasivo ACE.OLEDB.12.0 2010 x32 funcionó).
CONCLUSIONES
Para usar la configuración de compilación x64, debe tener el motor de base de datos x64 2016 y el proveedor de cadena de conexión ACE.OLEDB.16.0 Y la configuración de compilación x64 explícita para trabajar con Office 365 en enero de 2020. El uso de la opción / pasiva facilita las instalaciones. ¡Crédito a quien publicó ese consejo!
Para usar AnyCPU, necesitaba tener instalados el motor ACE.OLEDB.12.0 2010 x32 y los motores ACE.OLEDB.16.0 x64. De esa forma, Vstudio podría ver los motores x32 y x64 en el momento de compilación "AnyCPU". Podría cambiar la cadena de conexión del proveedor a ACE.OLEDB.12.0 para la operación x32 o a ACE.OLEDB.16.0 para la operación x64. Ambos funcionaron bien.
Para usar la configuración de compilación x86, debe tener el motor de base de datos x32 2010 Y el proveedor de cadena de conexión ACE.OLEDB.12.0 Y la configuración de compilación x86 explícita para trabajar con Office 365 x32 en enero de 2020.
fuente
Tengo un problema similar cuando estamos leyendo el archivo de Excel.
Historia del problema:
Recientemente migramos 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 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 argumentos 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 la oficina de 64 bits, mi funcionalidad funcionaba bien sin esta solución. Esta solución solo es necesaria mientras nuestra aplicación se ejecuta en un sistema operativo de 64 bits que tiene una oficina de 32 bits instalada.
fuente
Simplemente descargue e instale el siguiente motor de Access DB (X86 o X64: según la configuración de su máquina) y vea la magia :)
https://www.microsoft.com/en-us/download/confirmation.aspx?id=13255
fuente
Seguí las instrucciones establecidas por otros; instalando este parche, instalando ese parche así como también el Microsoft Access Database Engine 2010.
Mi problema fue que estoy usando la misma biblioteca (linq2sql) en 2 sitios en mi máquina; 1 funciona y 1 no.
Finalmente descubrí que tenía que "habilitar aplicaciones de 32 bits" en la configuración avanzada del grupo de aplicaciones para mi sitio que no funciona.
Todo funciona bien ahora.
fuente
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. Haga clic en 'Proveedores' 5. Haga clic en 'Microsoft.ACE.OLEDB.12.0' 6. Desmarca todas las opciones y cierra
fuente
Recuerde instalar AccessDatabaseEngine en el servidor para la aplicación web.
fuente
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"). Entonces lo que hice fue ...
fuente
Ya tenía instalado Microsoft Access Database Engine 2010 Redistributable en mi máquina, pero aún recibía el proveedor Microsoft ACE OLEDB error del .
Luego recordé que me había actualizado a Office 2016 recientemente, por lo que tal vez 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 su MS Office, intente reinstalar Microsoft Access Database Engine 2010 Redistributable antes de perder el tiempo buscando otras soluciones. ¡Buena suerte!
fuente
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 bases de datos que me ayudaron.
Microsoft Access Database Engine 2010 Redistribuible
2007 Office System Driver: componentes de conectividad de datos
3.) Podría haber un problema con su plataforma de destino de compilación como "Cualquier CPU", puede ser que sea "X86" (Propiedades, Compilación, Destino de plataforma).
fuente
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 manera 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 archivos 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, recibirá el mensaje de error que lo trajo aquí.
En este caso tienes dos opciones. Primero, puede instalar la versión 2010 de 64 bits. Si tiene instalada la versión 2007 de 32 bits, simplemente puede instalar la versión 2010 de 64 bits junto con ella. Si tiene instalada la versión de 2010 de 32 bits, debe desinstalarla y descargar e instalar la versión de 2010 de 64 bits. 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, también puede verse limitado por el bit de cualquier instalación de Office existente.
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 utilizar 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, consulte el siguiente enlace
fuente
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 localizar la aplicación Importar / Exportar utilizada aquí, es decir, el .EXE. Y lo encontré en
Luego ejecuté el .exe directamente para realizar la importación de datos. ¡Y funcionó!
fuente
Esto funcionó para mí en este momento.
Pero para su paquete de aplicación puede utilizar cualquiera de las siguientes soluciones:
O
fuente