none
Error The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine en proyecto MVC RRS feed

  • Pregunta

  • Buenas Tardes:

    Actualmente estoy desarrollando una opcion para hacer una carga masiva de un archivo excel a una BD sql server 2014 el proceso de cargar el archivo al proyecto funciona bien el problema esta cuando tengo que leer el archivo e inyectarlo a la BD para tal fin estoy usando LinqtoExcel esta es mi clase:

                   

    public class ManipuladorExcel
        {
            private readonly ExcelQueryFactory _excel;

            public ManipuladorExcel(string nombreArchivo)
            {
                _excel = new ExcelQueryFactory(nombreArchivo)
                {
                    DatabaseEngine = LinqToExcel.Domain.DatabaseEngine.Ace,
                    TrimSpaces = LinqToExcel.Query.TrimSpacesType.Both,
                    UsePersistentConnection = true,
                    ReadOnly = true
                };
            }

            public IEnumerable<LCliente> ObtenerClientesDesdeArchivo()
            {
                try
                {
                    var filas = from c in _excel.Worksheet<LCliente>("Clientes")
                                select c;

                    return filas.ToList();
                }
                catch(Exception ex)
                {
                    string error = ex.Message;

                    return new List<LCliente>();
                }
            }
            }
    }

    y este es mi ActionResult en el controlador

                                     

    public ActionResult Upload(HttpPostedFileBase file)
            {

                var fileName = Path.GetFileName(file.FileName);//obtenemos el nombre del archivo a cargar
                file.SaveAs(Server.MapPath(@"~\Content\" + fileName));//guardamos el archivo en la ruta física que corresponde a la ruta virtual del archivo
                var archivo = Server.MapPath(@"~\Content\" + fileName);
                List<LCliente> clientes = new List<LCliente>();

                    var manipulador = new ManipuladorExcel(archivo);
                    clientes = manipulador.ObtenerClientesDesdeArchivo().ToList();


                    foreach (var cliente in clientes)
                    {
                        List<Cliente> Lcliente = new List<Cliente>();
                        Cliente objcli = new Cliente();
                        objcli.Cedula = cliente.Cedula;
                        objcli.Nombres = cliente.Nombres;
                        objcli.Direccion = cliente.Direccion;
                        objcli.id_Ciudad = cliente.Ciudad;
                        objcli.telefono1 = cliente.Tel1;
                        objcli.telefono2 = cliente.Tel2;
                        objcli.id_EstadoAct = 0;
                        objcli.Perfil_id = cliente.Perfil;
                        objcli.Estado = true;
                        objcli.Creado_Por = Session["Session_Usuario"].ToString();
                        objcli.Fecha_Creado = DateTime.Now;
                        objcli.Modificado_Por = Session["Session_Usuario"].ToString();
                        objcli.Fecha_Modificado = DateTime.Now;
                        Lcliente.Add(objcli);
                       _datos.Clientes.InsertAllOnSubmit(Lcliente);

                    }
                try
                {
                    _datos.SubmitChanges();
                }

                catch (Exception e)
                {
                    // Si ocurre un error, lo registramos mostramos.
                    string errorMsg = String.Format("{0} - {1}", archivo, e);

                }

    Pero al hacerle un paso a paso me sal esta excepcion The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine , ya instale este driver y sigue sin funcionar.  Estoy trabajando sobre un equipo com Windows 10 Home y Visual Studio 2015 Community, no se si el problema se de por la version Home del SO, EL Motor de BD lo tengo instaldo en un Maquina Virtual VMWare con sistema Operativo Windows 7 ultimate.

    Agradezco sus comentarios y/o alternativas para hacer esta carga masiva.

    mil gracias


    Carlos Alberto Hernández R. CEO -Xtreme Business Solutions Movil: 3102334026 Bogota- Colombia

    jueves, 13 de octubre de 2016 22:01

Respuestas

  • Buenas Noches

    Les comento que finalmente solucione este inconveniente pero para tal fin instale el diver AccessDatabaseEngine y el BuildCompiler en X86, le dejo el link de descarga por si se les presenta este mismo problema

    https://www.microsoft.com/es-es/download/confirmation.aspx?id=23734

    Saludos


    Carlos Alberto Hern&#225;ndez R. CEO -Xtreme Business Solutions Movil: 3102334026 Bogota- Colombia

    domingo, 16 de octubre de 2016 4:42

Todas las respuestas

  • hola

    Esta claro que la libreria LinqtoExcel  por debajo esta usando ado.net

    si esto ejecuta en un entorno web y usas el IIS deberias habilitarlo a 32 bits

    ademas de compilar con compatibilidad a 32 bits

    sino aplicas estos cambios a 32bits el acceso mediante ado.net a excel no funciona

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 14 de octubre de 2016 17:00
  • Buen Dia Lenadro

    Mil gracias por tu oportuna respuesta, esto ya lo habia hecho y no funciona mi pregunta es tendra que ver algo la version Home de mi Windows 10.

    gracias

    Saludos


    Carlos Alberto Hernández R. CEO -Xtreme Business Solutions Movil: 3102334026 Bogota- Colombia

    viernes, 14 de octubre de 2016 18:39
  • hola

    no creo que Win10 tenga que ver, sino mas bien la arquitectura de la pc, que sea de 64bit si lo afecta

    ahh quizas debas ver de instalar office en la pc, eso deberia agregar los driver, al menos podrias probarlo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 14 de octubre de 2016 18:49
  • Lenadro

    efectivamente la arquitectura del mi laptop es de 64 bits, tambien baje el driver 

    Microsoft.ACE.OLEDB.12.0 de 64 y lo instale y nada, tengo instalado office 365, que otra alternativa me suguieres para hacer una carga masiva

    gracias

    Saludos


    Carlos Alberto Hernández R. CEO -Xtreme Business Solutions Movil: 3102334026 Bogota- Colombia

    viernes, 14 de octubre de 2016 21:56
  • hola

    office 365 no aplica porque este se accede por medio del browser, yo apunto a instalar office local en la pc ya que este agrega los driver de acceso a los documentos

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 14 de octubre de 2016 22:04
  • Lenadro

    Me equivoque es office 2016 seria instalar una version anterior entonces, porque el driver como te dije ya lo instale.

    gracias


    Carlos Alberto Hernández R. CEO -Xtreme Business Solutions Movil: 3102334026 Bogota- Colombia

    viernes, 14 de octubre de 2016 22:49
  • Buenas Noches

    Les comento que finalmente solucione este inconveniente pero para tal fin instale el diver AccessDatabaseEngine y el BuildCompiler en X86, le dejo el link de descarga por si se les presenta este mismo problema

    https://www.microsoft.com/es-es/download/confirmation.aspx?id=23734

    Saludos


    Carlos Alberto Hern&#225;ndez R. CEO -Xtreme Business Solutions Movil: 3102334026 Bogota- Colombia

    domingo, 16 de octubre de 2016 4:42
  • tienes micha razón , me funcionó tu solución mejor que estar instalando otro componente  de office
    martes, 17 de abril de 2018 16:33