'Microsoft.ACE.OLEDB.12.0' prestatorul nu este înregistrat pe mașina locală

Am'm încercarea de a obține date dintr-un fișier Excel pe un buton, faceți clic pe eveniment. Mi șir de conexiune este:

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

Când m-am faceți clic pe butonul, am si eu urmatoarea eroare:

'Microsoft.ACE.OLEDB.12.0' prestatorul nu este înregistrat pe mașina locală.

Nu am nici o idee cum de a repara acest lucru. Sistemul meu de operare este Windows 7.

Comentarii la întrebare (6)
Soluția

Ei bine, trebuie să-l instalați. Te're în căutarea pentru:

Comentarii (12)

Un 64-bit traducere de 'Motor de baze de Date Microsoft Access 2010 Redistributable' care vă va permite să utilizați 'Microsoft.ACE.OLEDB.12.0' furnizorul este disponibil aici:
http://www.microsoft.com/en-us/download/details.aspx?id=13255

Dacă utilizați descărcați de pe răspunsul acceptat, va trebui să construiască pentru x86, după cum a subliniat de către @backtestbroker.com.

Comentarii (8)

în funcție de aplicație(32/64bit), folosind conexiunea pe care ai putea s-o instalez

Rezumat:

  • toate birourile din 2007-2016 conține furnizor "Microsoft.ACE.Oledb.12.0"
  • în funcție de aplicația dumneavoastră arhitectura alege corespunzătoare motor de execuție (32/64)
  • verifica furnizorii cu powershell-comandă de pe ambele 32 și 64 de biți shell:

(New-Object system.date.oledb.oledbenumerator).GetElements() | selectați SOURCES_NAME, SOURCES_DESCRIPTION

  • și veți vedea care furnizorul dvs. de sistem pot folosi

o poveste lungă: siruri de caractere pot fi găsite cu http://live.sysinternals.com/strings.exe

de exemplu. pe 64 de biți Sistem cu 32 de biți driverele instalate

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"

chiar și în cele viitoare office 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

veți găsi siruri de caractere

  • Microsoft.ACE.OLEDB

  • Microsoft.ACE.Oledb.12.0

Office 2013 vine, de asemenea, cu csi.dll

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

care conține "Microsoft.ACE.OLEDB.15.0"

și Office 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

care are "Microsoft.ACE.OLEDB.16.0" versiune

Comentarii (4)

Primul lucru pe care aveți nevoie pentru a verifica este de a construi dumneavoastră de configurare a aplicației.

  • Dacă aveți construit proiectul dumneavoastră sub platforma x86, apoi, în scopul de a rezolva tu problema, ar trebui să instalați următoarele pachete pe masina:
  1. În scopul de a utiliza 'Microsoft.ACE.OLEDB.12.0' furnizorul trebuie să instalați Microsoft Access Database Engine 2010 Redistributable în primul rând, această instalare este disponibil la: http://www.microsoft.com/download/en/details.aspx?id=13255 .

După ce instalarea este completă, încercați funcționare cerere, dacă acest rezolvă problema mare, dacă nu, continuați cu pasul 2.

  1. Următorul pas este o inexplicabilă soluție, care lucrează pentru Biroul 2010, chiar dacă este de Conectivitate de Date Componente ale Office 2007. Eu nu sunt destul de sigur de ce acest lucru funcționează, dar nu și acest lucru a fost dovedit de a lucra în aproape toate cazurile. Ai nevoie de a instalați Office 2007 System Driver: Conectivitate de Date Componente, această instalație este disponibil la: http://www.microsoft.com/download/en/confirmation.aspx?id=23734 .

După această instalare este completă, încercați să rulați aplicația dumneavoastră, acest lucru ar trebui să rezolve problema.

  • Dacă sunteți încercarea de a rula un aplicație construită sub x64 sau AnyCPU platforma, mi-ar recomanda în primul rând nu cred că se execută după cum era de așteptat sub platforma x86. În cazul în care nu se execută sub care platforma x86, efectuați pașii în prima parte și valida faptul că se ruleaza cum era de așteptat.

Am citit că MS Access drivere inclusiv baza de Date OLEDB driver funcționează numai sub platforma x86 și este incompatibil sub x64 sau AnyCPU platforma. Dar acest lucru pare a fi neadevărate. Am validat cererea mea a fost de funcționare atunci când construirea x86, apoi am instalat Accesa Motorul de baze de Date folosind pasiv pavilion.

  1. În primul rând descărcați fișierul local puteți descărca de instalare aici: http://www.microsoft.com/en-us/download/details.aspx?id=13255
  2. Instalarea folosind command prompt cu '/pasiv' steag. În promptul de comandă, executați următoarea comandă: 'AccessDatabaseEngine_x64.exe /pasiv'

Dupa aceste 2 etape am reușit să rula aplicația mea după construirea în x64 sau AnyCPU construi configurare. Aceasta a apărut pentru a rezolva problema mea.

Notă: ordinea de pași pare să facă o diferență, așa că vă rugăm să urmați în mod corespunzător.

Comentarii (4)

Am primit această eroare/excepție în Visual Studio 2010, când mi-am schimbat construi în Configuration Manager dialog box de la "x86" pentru "Orice CPU". Acest driver de baze de date OLEDB am înțeles funcționează numai în x86 și nu este de 64 de biți compatibil. Schimbarea de configurare construi înapoi la x86 rezolvat problema pentru mine.

Comentarii (2)

Am instalat MS drivere si tot nu't de lucru pentru mine. Apoi am găsit acest blog]1 care a rezolvat problema. Cititi acolo, altceva folosi aceste două imagini (legate de post), ca FIIND sumamary:

Comentarii (7)

Daca're folosind 64-bit dar încă probleme chiar și după instalarea AccessDatabaseEngine, a se vedea acest mesaj, a rezolvat problema pentru mine.

și anume, Aveți nevoie pentru a instala acest AccessDatabaseEngine

Comentarii (0)

Pentru toți cei mai afectați de acest lucru.

Am'am fost obtinerea de eroare...

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

...așa cum este descris de către OP, Shailesh Sahu.

Am 64 de biți de Windows 7.

Problema mea este la PowerShell script-uri, dar este folosind un șir de conexiune, similar cu OP's de post, deci sperăm că concluziile mele pot fi aplicate pentru C#, PowerShell și orice altă limbă bazându-se pe "Microsoft.ACE.OLEDB" driver.

Am urmat instrucțiunile de pe această MS forum thread: http://goo.gl/h73RmI

Am încercat în primul rând instalarea 64bit versiune, apoi instalarea 32 de biți versiunea AccessDatabaseEngine.exe din această pagină http://www.microsoft.com/en-us/download/details.aspx?id=13255

Dar încă nici o bucurie.

Am verificat codul de mai jos în PowerShell (de la SQL Panda's site-ul http://goo.gl/A3Hu96)

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

...care mi-a dat acest rezultat (am'am eliminat alte surse de date pentru concizie)...

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

După cum puteți vedea, am Microsoft.ACE.OLEDB.15.0 (cincisprezece) nu Microsoft.ACE.OLEDB.12.0 (douăsprezece)

Deci, am modificat mea șir de conexiune la 15 și a funcționat.

Deci, o scurtă PowerShell fragment pentru a demonstra cum de a soft-cod versiunea...

$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`";"

a fost modificat pentru a alege cele mai recente ACE versiune, dacă mai mult de o

Să sperăm că cineva a găsi acest acum puteți verifica pentru a vedea ce OLEDB versiune este instalat și utilizat corespunzător numărul de versiune.

Comentarii (3)

Aveți nevoie pentru a schimba Soluția Platforma de la "Orice CPU" pentru "x86" sau "x64" bazat pe bitness de instalare office.

Pașii sunt prezentate mai jos:

  1. Click dreapta pe Soluție de Fișiere în Soluție de Explorer:

  2. Faceți clic pe Configuration Manager.

  3. Apăsați pe Platforma de Drop-down, dacă x86 este deja acolo, apoi selectați care, altfel, faceți clic pe Nou.

  4. Selectați x86 sau x64 de la noua platforma vertical:

Compila și rula aplicația.

Comentarii (0)

Deși mulți s-au dat răspunsuri, problema-am întâlnit nu a fost încă menționat.

  • Scenariul meu: Aplicație pe 64 de Biți, Win10-64, Office 2007 32-Bit instalat.

  • Instalarea 32-Bit Installer AccessDatabaseEngine.exe fi descărcat de la MS rapoarte de succes, dar NU este instalat, verificat cu Powershell Script-ul de una dintre postarile de mai sus aici.

  • Instalarea pe 64 de Biți de instalare AccessDatabaseEngine_X64.exe raportate șocante un mesaj de eroare:

Foarte simplă soluție a fost găsit aici de pe site-ul Autodesk. Trebuie doar să adăugați parametrul /pasiv la commandline șir de caractere, astfel:

AccessDatabaseEngine_X64.exe /pasiv

Instalare de succes, OleDb a lucrat șofer.

Excel fișiere sunt prelucrare cu OleDb sunt de xlsx tip, produs cu EPPlus 4.5 și modificat cu Excel 2007.

Comentarii (1)

Dacă sunteți de depanare un proiect web, doar asigurați-vă că IIS Express se execută fie pe 32 sau pe 64 de biți, în funcție de setările proiectului.

Du-te

Instrumente > Opțiuni > Proiecte și Soluții > Proiecte Web

și de acolo bifați (sau debifați) la 'Utilizați versiunea pe 64 de biți de IIS Express...'

Comentarii (1)

Dacă instalat "AccessDatabaseEngine" încă nu ajuta, mai jos este solutia:

Aveți nevoie pentru a schimba Active Soluție Platforma de la "Orice CPU" pentru "x86".

OLEDB Provider Nu este Înregistrată pe Mașina Locală

Din CodeProject.com

Comentarii (2)

Am fost capabil de a repara acest lucru urmând pașii din acest articol: http://www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0-provider-is-not-registered-on-the-local-machine

Punctul cheie pentru mine a fost asta:

Atunci când depanare cu IIS,

implicit, Visual Studio foloseste versiunea pe 32 de biți. Puteți schimba acest lucru din Visual Studio, de a merge la Tools » Opțiuni » Proiecte Și Soluții » Proiecte Web » General, și alegerea

"Utilizați versiunea pe 64 de biți de IIS Express pentru site-uri web și proiecte"

După verificarea faptului că o opțiune, apoi setarea platforma țintă din proiectul meu înapoi la "Orice CPU" (am pus-o pe x86 undeva în procesul de depanare), am fost capabil să depășească eroarea.

Comentarii (1)

În primul rând a verifica ce versiune de microsoft.ace.oledb.12.0 este instalat în sistemul dumneavoastră.

Verificați în calea de mai jos C:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL --64 bit este instalat

Verificați în calea de mai jos C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL --x86 bit este instalat

Dacă (x86), atunci este instalat folosind configuration manager schimba soluție platformă x86, x64 schimba la x64.

Dacă nu este disponibil, atunci instala folosind link-ul de mai jos

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

Comentarii (0)

Am avut această problemă atunci când încearcă pentru a importa date dintr-un fișier excel (xlsx) într-un Server SQL DB folosind SSMS 2014.

De 2007 Office System Driver: Conectivitate de Date Componente a se instala făcut truc pentru mine.

Comentarii (1)

syp_dino,

Soluția pentru mine cum ai sugerat pentru "Microsoft.ACE.OLEDB.12.0' prestatorul nu este înregistrat pe mașina locală" eroare este de a schimba Active Soluție Platforma de la "Orice CPU" pentru "x86".

Atunci când am efectuat acești pași, reconstruit soluție, a luat EXE și plasate în rețea, totul a mers fără probleme pe Windows 7 64 bit mașină.

Comentarii (2)

Trebuie doar să descărcați & instala următoarele Acces DB motor (X86 sau X64: ca pe configurația aparatului dumneavoastră) și a vedea magia :)

https://www.microsoft.com/en-us/download/confirmation.aspx?id=13255

Comentarii (0)

Și eu am astfel de problemă atunci când citim fișier Excel.

Istoria problemei:

Am migrat recent aplicația noastră de 32-bit to 64-bit pentru cerința de memorie. Pentru că am migrat nostru de windows 7 de 32-bit to 64-bit. Dar încă am instalat pe 32 de biți de office pe mașinile noastre.

pentru că, de asta am avut această problemă în timp ce importul de date Excel în aplicare.

Soluția,

Am descarcat versiunea pe 64 de biți de http://www.microsoft.com/en-us/download/details.aspx?id=13255 și-a instalat cu argumentul ca,

AccessDatabaseEngine_x64.exe /pasiv

Fără nici o schimbare de cod problema mea sa rezolvat.

Notă:

Pe 64 de biți și pe 64 de biți de office, funcțiile mea a fost de lucru bine și fără acest remediu. Această remediere este necesară numai în timp ce aplicația noastră este de 64-biți care rulează pe 64-bit sistem de OPERARE care are 32 de biți de office instalat pe el.

Comentarii (1)

M-am confruntat cu aceeași problemă. Du-te la Proprietățile Soluției și de a schimba Orice CPU x86, cred ca va face treaba.

Comentarii (0)

face acest lucru de 2 pași:

  1. în acest meniu: proiect -> yourproject proprietati... -> Construi : debifați "prefera 32-Bit"
  2. în connectionString : scrie cuotes înainte și după proprietățile Extinse, astfel: Proprietățile Extinse='Excel 12.0 Xml;HDR=DA'

var nume = string.Format("{0}", openFileDialog1.FileName); //var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Proprietăți Extinse=Excel 8.0;", fileName); var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;data Source={0}; Proprietăți Extinse='Excel 12.0 Xml;HDR=DA'", fileName); var adaptor = new OleDbDataAdapter("SELECTAȚI * DE la [Sheet1$]", connectionString); var ds = new DataSet();

adaptor.Fill(ds, TableNmae);

DataTable datele = ds.Tabele[TableNmae]; dg1.DataSource = de date;

Comentarii (1)