В 'Майкрософт.ТУЗ.Oledb для.12.0 ' поставщик не зарегистрирован на локальном компьютере при экспорте данных в MS ACCESS
Я новичок в использовании Microsft.ТУЗ.Для oledb 12.0. Я создаю приложение Winforms VS 2010.
и создать функцию для экспорта данных сетки данных в файл MS Access. Я использую Microsoft Oledb
для экспорта данных сетки данных в файл MS Access.Но я получаю эту ошибку, когда пытаюсь экспортировать
на
данные для ms access.
пожалуйста, смотрите изображение ниже.
Я также ссылаюсь на Microsoft.Библиотека Объектов Office 12.0 в моем приложении.
Конфигурация Пакетной Сборки
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 бит:
удалите все установленные 32-разрядные версии office.
Ссылка для скачивания:https://www.microsoft.com/en-us/download/details.aspx?id=13255
выберите Загрузить 64 бит, а затем установите его на сервер (если вы не можете настроить программу. Пожалуйста, проверьте 1 пункт).
доступ повторите снова заявление. Введите описание изображения здесь
для меня установка Microsoft Access Database Engine 2010 Redistributable Исправлена проблема, 32-разрядная версия.