Поставщик «Microsoft.ACE.OLEDB.12.0» не зарегистрирован на локальном компьютере - PullRequest
363 голосов
/ 11 июля 2011

Я пытаюсь получить данные из файла Excel по событию нажатия кнопки.Моя строка подключения:

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

Когда я нажимаю на кнопку, появляется следующая ошибка:

Поставщик «Microsoft.ACE.OLEDB.12.0» не зарегистрированна локальной машине.

Понятия не имею, как это исправить.Моя операционная система - Windows 7.

Ответы [ 33 ]

4 голосов
/ 12 мая 2019

Хотя было дано много ответов, проблема, с которой я столкнулся, еще не была упомянута.

  • Мой сценарий: 64-разрядное приложение, Win10-64, Office 2007 32-Бит установлен.
  • Установка 32-разрядного установщика AccessDatabaseEngine.exe при загрузке с MS сообщает об успешном выполнении, но НЕ устанавливается, как проверено скриптом Powershell одного изсообщения выше здесь.

  • Установка 64-разрядного установщика AccessDatabaseEngine_X64.exe сообщил о шокирующем сообщении об ошибке:

enter image description here

Очень простое решение было найдено здесь на сайте Autodesk.Просто добавьте параметр / passive в строку командной строки, например:

AccessDatabaseEngine_X64.exe / passive

Установка прошла успешно, драйвер OleDb сработал.

Файлы Excel, которые я обрабатываю с помощью OleDb, относятся к типу xlsx, созданы в EPPlus 4.5 и изменены в Excel 2007.

4 голосов
/ 24 июня 2013

Если установленный «AccessDatabaseEngine» по-прежнему не помогает, ниже приведено решение:

Вам необходимо изменить платформу Active Solution с «Любой ЦП» на «x86».

Поставщик OLEDB не зарегистрирован на локальном компьютере

С CodeProject.com

4 голосов
/ 13 июля 2016

Если вы отлаживаете веб-проект, просто убедитесь, что IIS Express работает в 32 или 64 битах в зависимости от настроек вашего проекта.

Перейти

Инструменты> Параметры> Проекты и решения> Веб-проекты

и оттуда отметьте (или снимите флажок) «Использовать 64-разрядную версию IIS Express ...»

3 голосов
/ 20 июля 2018

Я столкнулся с этой же проблемой.Перейдите в Свойства решения и измените Любой процессор на x86, я думаю, что он будет работать.

3 голосов
/ 20 декабря 2017

Сначала проверьте, какая версия microsoft.ace.oledb.12.0 установлена ​​в вашей системе.

Проверьте путь ниже C: \ Program Files \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL - установлен 64-битный код

Проверьте путь ниже C: \ Program Files (x86) \ Общие файлы \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL - установлен бит xx

Если (x86) установлен, то с помощью диспетчера конфигурации измените платформу решения на x86, для x64 - на x64.

Если нет в наличии, установите по ссылке ниже

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

3 голосов
/ 12 апреля 2017

У меня была эта проблема при попытке импортировать данные из файла Excel (xlsx) в БД SQL Server с использованием SSMS 2014.

Драйвер 2007 для системы Office: компоненты для подключения к данным установка сделала свое дело.

3 голосов
/ 26 июня 2014

syp_dino,

Решение для меня, как вы предложили для "Microsoft.ACE.OLEDB.12.0 ', провайдер не зарегистрирован на локальном компьютере" ошибка состоит в том, чтобы изменить Active Solution Platform с «Любой ЦП» на "x86".

Когда я выполнил эти шаги, перестроил решение, взял EXE и поместил в сеть, все работало на 64-битной машине с Windows 7.

2 голосов
/ 07 апреля 2017

Просто скачайте и установите следующий движок Access DB (X86 или X64: в соответствии с конфигурацией вашей машины) и вы увидите магию :)

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

2 голосов
/ 13 февраля 2015

У меня похожая проблема при чтении файла Excel.

История проблемы:

Мы недавно перенесли наше приложение из 32-разрядного в 64-разрядное из-за требования к памяти. Для этого мы перенесли нашу Windows 7 из 32-битной в 64-битную версию. Но все же мы установили 32-битный офис на наших машинах.

из-за этого у нас возникла эта проблема при импорте данных Excel в приложение.

Решение

Я скачал 64-битную версию http://www.microsoft.com/en-us/download/details.aspx?id=13255 и установил с аргументом как,

AccessDatabaseEngine_x64.exe / passive

Без изменения кода моя проблема будет решена.

Примечание:

В 64-битной ОС и 64-битном офисе моя функциональность работала нормально без этого исправления. Это исправление требуется только в том случае, если наше приложение работает на 64-разрядной ОС с установленным 32-разрядным офисом.

1 голос
/ 21 марта 2019

сделать это 2 шага: 1. в этом меню: проект -> свойства вашего проекта ... -> сборка: снимите флажок "предпочесть 32-битный" 2. в connectionString: написать комментарии до и после расширенных свойств, например: Extended Properties = 'Excel 12.0 Xml; HDR = YES'

                var fileName = string.Format("{0}", openFileDialog1.FileName);
            //var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", 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;
...