В 'Майкрософт.ТУЗ.Oledb для.12.0 ' поставщик не зарегистрирован на локальном компьютере при экспорте данных в MS ACCESS

Я новичок в использовании Microsft.ТУЗ.Для oledb 12.0. Я создаю приложение Winforms VS 2010.

и создать функцию для экспорта данных сетки данных в файл MS Access. Я использую Microsoft Oledb

для экспорта данных сетки данных в файл MS Access.Но я получаю эту ошибку, когда пытаюсь экспортировать

на

данные для ms access.

пожалуйста, смотрите изображение ниже.

enter image description here

Я также ссылаюсь на Microsoft.Библиотека Объектов Office 12.0 в моем приложении.

enter image description here

Конфигурация Пакетной Сборки

enter image description here

5 ответов


ссылка Access Interop bits не имеет ничего общего с вашим исключением, и для использования классов вSystem.Data.OleDb.

проблема возникает, когда у вас есть приложение, скомпилированное для AnyCPU Platform, вы работаете на 64-битной системе и установленной ADO.NET поставщик (Microsoft ACE.Oledb для.12.0) является 32-битовой версии.

при использовании AnyCpu целевая платформа ваш код будет выполнен как 64-битный код на 64-битных системах и как 32-битный код на 32-битных системах. Приложение, выполняемое как 64bit, не может использовать драйверы 32bit (и viceversa). Теперь добавьте к этому тот факт, что Microsoft.ТУЗ.Oledb для.12.0 имеет две разные версии. Для 64bit и для 32bit, и один, и они не могут быть установлены вместе на одной машине.

самый простой способ-изменить целевую платформу приложения через меню Visual Studio

 BUILD -> Configuration Manager -> Active Solution Platform -> x86

если x86 опция еще не существует, затем выберите Создать, имя это x86, Copy Settings from AnyCPU и Create new project platforms

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

конечно, другой вариант-деинсталлировать 32-битную версию и установить 64-битную версию ACE отсюда а затем запустите приложение как AnyCpu на 64-битных системах. Но это может быть кошмаром для сценариев развертывания. Что делать, если версия Microsoft Office 32bit установлена на целевой машине x64? Office устанавливает свою бит-совместимую версию ACE и, как сказано, невозможно установить 32bit и 64bit ACE на одном компьютере.
Теперь вы также должны попросить своего клиента переустановить Office как 64bit, чтобы ваше приложение 64bit было счастливым.

обновление


Ситуация немного изменилась с новейшими версиями Visual Studio. Теперь есть новая опция, которая используется по умолчанию для новых проектов. Она называется AnyCPU предпочитают 32-битный режим. Подробнее по этой ссылке:что на самом деле означает AnyCPU с .NET 4.5 и Visual Studio 11 и еще один интересный пост (хотя и относительно SQL Server Compact) - это проблема с ЦП–предпочитаю 32 bit-BadImageFormatException


изменение в пуле приложений "дополнительные настройки", чтобы позволить запускать 32-разрядные программы... это помогло мне.


У меня аналогичная проблема, когда мы читаем файл Excel.

история вопроса:

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

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

решение

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

AccessDatabaseEngine_x64.ехе /пассивный

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

Примечание:

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


базовая образом:

применение : MVC C#, Для Win Server 64 бит:

  1. удалите все установленные 32-разрядные версии office.

  2. Ссылка для скачивания:https://www.microsoft.com/en-us/download/details.aspx?id=13255

  3. выберите Загрузить 64 бит, а затем установите его на сервер (если вы не можете настроить программу. Пожалуйста, проверьте 1 пункт).

  4. доступ повторите снова заявление. Введите описание изображения здесь


для меня установка Microsoft Access Database Engine 2010 Redistributable Исправлена проблема, 32-разрядная версия.