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

Viewed 1555743

I'm trying to get data from an Excel file on a button click event. My connection string is:

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

When I click on the button, I got the following error:

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

I have no clue how to fix this. My operating system is Windows 7.

39 Answers

Although many answers have been given, the problem I encountered was not yet mentioned.

  • My Scenario: 64-Bit Application, Win10-64, Office 2007 32-Bit installed.
  • Installation of the 32-Bit Installer AccessDatabaseEngine.exe as downloaded from MS reports success, but is NOT installed, as verified with the Powershell Script of one of the postings above here.

  • Installation of the 64-Bit installer AccessDatabaseEngine_X64.exe reported a shocking error message:

enter image description here

The very simple solution has been found here on an Autodesk site. Just add the parameter /passive to the commandline string, like this:

AccessDatabaseEngine_X64.exe /passive

Installation successful, the OleDb driver worked.

The Excel files I am processing with OleDb are of xlsx type, produced with EPPlus 4.5 and modified with Excel 2007.

do this 2 steps:

  1. in this menu: project -> yourproject properties... -> Build : uncheck "prefer 32-Bit"
  2. in connectionString : write cuotes before and after Extended properties, like this: Extended Properties='Excel 12.0 Xml;HDR=YES'
var fileName = string.Format("{0}", openFileDialog1.FileName);
var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties='Excel 12.0 Xml;HDR=YES'", fileName);
var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
var ds = new DataSet();

adapter.Fill(ds, TableNmae);

DataTable data = ds.Tables[TableNmae];
dg1.DataSource = data;

I faced this same problem. Go to the Solution Properties and change Any CPU to x86, I think it will do the job.

These configurations worked in January of 2020 on my new machine build:

(1 - x64 only) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 installed with /passive argument, VStudio build settings set to x64 explicitly, with the following connection string: Provider= Microsoft.ACE.OLEDB.16.0; Data Source=D:...\MyDatabase.accdb

(2 - x64 or x32) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 installed with /passive argument, PLUS AccessDatabaseEngine 2010 (32bit) installed with /passive argument, VStudio build settings set to AnyCPU, with the following connection string: Provider= Microsoft.ACE.OLEDB.16.0; Data Source=D:...\MyDatabase.accdb

(3 - x32 only) Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32bit) installed with /passive argument, VStudio build settings set to x86, with the following connection string: Provider= Microsoft.ACE.OLEDB.12.0; Data Source=D:...\MyDatabase.accdb

FAILURE NOTES

Using the ACE.OLEDB.12.0 x64 provider in the connection string failed with only the AccessDatabaseEngine_x64 2016 installed as above in (1).

Using AnyCPU in the visual studio build settings failed in (1). Setting x64 is required. Maybe this is because AnyCPU means that Vstudio must see an x32 ACE.OLEDB.nn.0 provider at compile time.

The ACE.OLEDB.12.0 2016 x32 /passive engine would NOT install when it saw x64 applications around. (The ACE.OLEDB.12.0 2010 x32 /passive installer worked.)

CONCLUSIONS

To use x64 build settings, you need to have the 2016 x64 database engine AND the ACE.OLEDB.16.0 connection-string provider AND explicit x64 build settings to work with Office 365 in January of 2020. Using the /passive option makes installations easy. Credit to whoever posted that tip!

To use AnyCPU, I needed to have both the ACE.OLEDB.12.0 2010 x32 engine and the ACE.OLEDB.16.0 x64 engines installed. That way Vstudio could see both x32 and x64 engines at "AnyCPU" compile time. I could change the provider connection string to ACE.OLEDB.12.0 for x32 operation or to ACE.OLEDB.16.0 for x64 operation. Both worked fine.

To use x86 build settings, you need to have the 2010 x32 database engine AND the ACE.OLEDB.12.0 connection-string provider AND explicit x86 build settings to work with Office 365 x32 in January of 2020.

A 64-bit version of the 'Microsoft Access Database Engine 2010 Redistributable' that will allow you to use the 'Microsoft.ACE.OLEDB.12.0' provider is available here: http://www.microsoft.com/en-us/download/details.aspx?id=13255

If using VS 2012 or later, make sure that "Prefer 32-bit" checkbox is unchecked in the project's Properties => Build => General configuration enter image description here

I had tried uninstalling and then installing "Microsoft Access Database Engine 2010 (English) several times and finally the comment - "Changed option from ANY CPU to x86" and it worked.

Thanks for that comment - I am now back in business after 2 weeks of frustration.

The way I solved it on different computers:

I have a Windows 7 32bit machine with Visual Studio 2012 which did not have the Access Database because I do not have the Office 2010. I copied the same source I had in my Windows 7 64bit machine.

So, I installed the AccessDatabaseEngine into this Windows 7 32 bit machine after downloading it per above suggestions from others here and everything worked fine.

I still had the problem on my Windows 7 64 bit machine which already has Office 2010 that already includes Access 2010. The way I solved on this computer was by going into the PROJECT, selected Properties, and at Platform target had Any CPU I checked Prefer 32-bit. Recompiled/Build and the Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine message was gone.

This worked for me right now.

  1. Visit this page then download that appropriated package for your computer (AccessDatabaseEngine.exe or AccessDatabaseEngine_X64.exe)
  2. Install that.
  3. Enjoy... Your codes are working now...

But for your application package you can use of any the following solutions:

  1. Go in C:\Program Files (x86)\Common Files\microsoft shared or C:\Program Files\Common Files\Microsoft Shared and put the OFFICE14 directory in the same location of your package file.

Or

  1. Attach two projects (in item1) to your installation package.

Just add the CsvReader from the Nuget package manager. It is fast and easy and there is no headache of making any connections like this. Just search with nuget package manager and import the library:-

using LumenWorks.Framework.IO.Csv;

Code:

var csvTable = new DataTable();   
using (var csvReader = new CsvReader(new         
StreamReader(System.IO.File.OpenRead(filePath)), true))   
{   
   csvTable.Load(csvReader);   
   string Column1 = csvTable.Columns[0].ToString(); //Read columns    
}

In my case I didn't realize I had a typo in my connection string that actually mattered. Please note that the .0 at the end of the provider is required:

So this is correct:

PROVIDER=Microsoft.ACE.OLEDB.16.0;

This is not correct:

PROVIDER=Microsoft.ACE.OLEDB.16;

for Visual Studio 2022 (and newer)

I had this error every time and it didn't help anything. VS2019 was the solution.

https://docs.microsoft.com/en-us/visualstudio/data-tools/accessing-data-in-visual-studio?view=vs-2022#data-providers

If you're using Visual Studio 2022 to connect to databases, you will need to be aware that Visual Studio 2022 is a 64-bit process. This means some of the data tools in Visual Studio will not be able to connect to OLEDB or ODBC databases using 32-bit data providers.

If you need to maintain 32-bit applications that connect to OLEDB or ODBC databases, you will still be able to build and run the application with Visual Studio 2022. However, if you need to use any of the Visual Studio Data Tools such as Server Explorer, Data Source Wizard, or the DataSet Designer, you will need to use an earlier version of Visual Studio that is still a 32-bit process. The last version of Visual Studio that was a 32-bit process was Visual Studio 2019.

Related