Я пытаюсь получить данные из файла 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.
execute master.dbo.xp_enum_oledb_providers
сообщает, что находится на сервере, а не на вашем локальном компьютере .Ответы:
Ну, вам нужно установить его. Ты ищешь:
источник
2007 Office System Driver: Data Connectivity Components
решена немедленно.64-разрядная версия «Microsoft Access Database Engine 2010 Redistributable», которая позволит вам использовать поставщика «Microsoft.ACE.OLEDB.12.0», доступна здесь:
http://www.microsoft.com/en-us/ скачать / details.aspx? ID = 13255
Если вы используете загрузку из принятого ответа, вам нужно будет собрать для x86, как указано @ backtestbroker.com.
источник
в зависимости от приложения (32 / 64bit), используя соединение, которое вы можете просто установить
Резюме:
проверьте своих провайдеров с помощью powershell-команды из 32- и 64-битной оболочки :
и вы увидите, какой провайдер может использовать ваша система
длинная история: строки можно найти с http://live.sysinternals.com/strings.exe
например. в 64-битной системе с установленными 32-битными драйверами
даже в предстоящем офисе 2016
вы найдете строки
Microsoft.ACE.OLEDB
Microsoft.ACE.Oledb.12.0
Office 2013 поставляется также с csi.dll
который содержит " Microsoft.ACE.OLEDB.15.0 "
и офис 2016
которая имеет версию " Microsoft.ACE.OLEDB.16.0 "
источник
Get-OdbcDriver | select Name,Platform
Первое, что вам нужно проверить, это конфигурация сборки вашего приложения.
Если вы создали свой проект на платформе x86 , то для решения вашей проблемы вы должны установить на свой компьютер следующие пакеты:
Чтобы использовать поставщика Microsoft.ACE.OLEDB.12.0, сначала необходимо установить распространяемый компонент Microsoft Access Database Engine 2010 ; эта установка доступна по адресу: http://www.microsoft.com/download/en/details.aspx. ? id = 13255 .
После завершения установки попробуйте запустить приложение, если это решит проблему, если нет, перейдите к шагу 2.
Этот следующий шаг - необъяснимый обходной путь, который работает для Office 2010, хотя это и есть Компоненты подключения к данным Office 2007. Я не совсем уверен, почему это работает, но это работает, и это было доказано, что работает почти во всех случаях. Вам необходимо установить драйвер системы Office 2007: компоненты подключения к данным , эта установка доступна по адресу: http://www.microsoft.com/download/en/confirmation.aspx?id=23734 .
После завершения установки попробуйте запустить приложение, это должно решить проблему.
Если вы пытаетесь запустить приложение, созданное на платформе x64 или AnyCPU , я бы рекомендовал сначала проверить, что оно работает должным образом на платформе x86. Если он не работает на этой платформе x86, выполните действия, описанные в первой части, и проверьте, что он работает должным образом.
Я читал, что драйверы MS Access, включая драйвер базы данных OLEDB, работают только на платформе x86 и несовместимы с платформой x64 или AnyCPU. Но это, похоже, не соответствует действительности. Я подтвердил, что мое приложение работало при сборке x86, затем я установил Access Database Engine, используя пассивный флаг.
После этих двух шагов мне удалось запустить приложение после сборки в конфигурации сборки x64 или AnyCPU. Это оказалось, чтобы решить мою проблему.
Примечание: порядок шагов, кажется, имеет значение, поэтому, пожалуйста, следуйте соответствующим образом.
источник
AceRedist.msi /passive
.Я получил эту ошибку / исключение в Visual Studio 2010, когда я изменил свою сборку в диалоговом окне Configuration Manager с «x86» на «Любой процессор». Этот драйвер базы данных OLEDB, который я понимаю, работает только в x86 и не является 64-битной совместимой. Изменение конфигурации сборки обратно на x86 решило проблему для меня.
источник
Я установил драйверы MS, и он все еще не работал для меня. Тогда я нашел этот пост в блоге, который решил проблему. Прочтите его там, иначе используйте эти два изображения (ссылки из этого поста) в качестве суммарного значения TLDR:
источник
Если вы используете 64-разрядную версию, но у вас по-прежнему возникают проблемы даже после установки AccessDatabaseEngine, см. Этот пост , он решил проблему для меня.
т.е. вам нужно установить этот AccessDatabaseEngine
источник
Для всех тех, кто еще пострадал от этого.
Я получаю ошибку ...
... как описано в ОП, Шайлеш Саху.
У меня 64 битная Windows 7.
Моя проблема в сценариях PowerShell , но я использую строку подключения, аналогичную посту OP, поэтому, надеюсь, мои выводы могут быть применены к C #, PowerShell и любому другому языку, использующему драйвер «Microsoft.ACE.OLEDB».
Я следовал инструкциям на этой ветке форума MS: http://goo.gl/h73RmI
Сначала я попытался установить 64-разрядную версию, а затем установить 32-разрядную версию AccessDatabaseEngine.exe с этой страницы http://www.microsoft.com/en-us/download/details.aspx?id=13255.
Но все равно нет радости.
Затем я запустил приведенный ниже код в PowerShell (с сайта SQL Panda http://goo.gl/A3Hu96 )
... который дал мне этот результат (для краткости я удалил другие источники данных) ...
Как видите, у меня есть Microsoft.ACE.OLEDB. 15 .0 (пятнадцать) не Microsoft.ACE.OLEDB. 12 0,0 (двенадцать)
Итак, я изменил строку подключения до 15, и это сработало.
Итак, быстрый фрагмент PowerShell, демонстрирующий, как программировать версию ...
исправлено, чтобы выбрать последнюю версию ACE, если более одного
Надеюсь, любой, кто найдет это, сможет проверить, какая версия OLEDB установлена, и использовать соответствующий номер версии.
источник
Хотя было дано много ответов, проблема, с которой я столкнулся, еще не упоминалась.
Установка 32-разрядного установщика AccessDatabaseEngine.exe, загруженного из MS, сообщает об успехе, но НЕ устанавливается, что подтверждается сценарием Powershell, приведенным выше.
При установке 64-разрядного установщика AccessDatabaseEngine_X64.exe появилось шокирующее сообщение об ошибке:
Очень простое решение было найдено здесь, на сайте Autodesk. Просто добавьте параметр / passive в строку командной строки, например так:
Установка прошла успешно, драйвер OleDb сработал.
Файлы Excel, которые я обрабатываю с помощью OleDb, относятся к типу xlsx, созданы в EPPlus 4.5 и изменены в Excel 2007.
источник
Вам необходимо изменить платформу решений с «Любой ЦП» на «x86» или «x64» в зависимости от разрядности установки в офисе.
Шаги приведены ниже:
Щелкните правой кнопкой мыши файл решения в обозревателе решений:
Нажмите на активную платформу. Если x86 уже существует, выберите его, иначе нажмите New.
Выберите x86 или x64 из раскрывающегося списка новой платформы:
Скомпилируйте и запустите ваше приложение.
источник
Если установленный «AccessDatabaseEngine» по-прежнему не помогает, ниже приведено решение:
Вам нужно изменить Active Solution Platform с «Любой процессор» на «x86».
OLEDB-провайдер не зарегистрирован на локальном компьютере
С CodeProject.com
источник
Мне удалось это исправить, выполнив действия, описанные в этой статье: http://www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0-provider-is-not-registered- на-местной-машина
Ключевым моментом для меня было это:
При отладке с IIS,
«Используйте 64-битную версию IIS Express для веб-сайтов и проектов»
После проверки этой опции, затем установив целевую платформу моего проекта обратно на «Любой процессор» (где-то в процессе устранения неполадок я установил его на x86), я смог преодолеть ошибку.
источник
Если вы отлаживаете веб-проект, просто убедитесь, что IIS Express работает в 32- или 64-разрядном режиме в зависимости от настроек вашего проекта.
Перейти к
и оттуда отметьте (или снимите флажок) «Использовать 64-разрядную версию IIS Express ...»
источник
Сначала проверьте, какая версия microsoft.ace.oledb.12.0 установлена в вашей системе.
Проверьте ниже путь C: \ Program Files \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL - установлен 64-битный
Проверьте ниже путь C: \ Program Files (x86) \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL - установлен бит x86
Если (x86) установлен, то с помощью диспетчера конфигурации измените платформу решения на x86, для x64 - на x64.
Если нет в наличии, установите по ссылке ниже
https://www.microsoft.com/en-us/download/details.aspx?id=23734
источник
syp_dino,
Решение для меня, как вы предложили для провайдера «Microsoft.ACE.OLEDB.12.0» не зарегистрирован на локальном компьютере », заключается в изменении платформы Active Solution Platform с« Любой ЦП »на« x86 ».
Когда я выполнил эти шаги, перестроил решение, взял EXE и поместил в сеть, все работало на 64-битной машине с Windows 7.
источник
У меня была эта проблема при попытке импортировать данные из файла Excel (xlsx) в БД SQL Server с использованием SSMS 2014.
2007 Office System Driver: Компоненты подключения данных установки сделал трюк для меня.
источник
Я столкнулся с этой же проблемой. Перейдите в Свойства решения и измените Любой процессор на x86, я думаю, что он будет работать.
источник
выполните это 2 шага: 1. в этом меню: проект -> свойства вашего проекта ... -> Build: снимите флажок «предпочесть 32-битный» 2. в connectionString: пишите комментарии до и после расширенных свойств, например: Extended Properties = ' Excel 12.0 Xml; HDR = ДА '
источник
Эти конфигурации работали в январе 2020 года на моей новой машине:
(Только 1 - x64) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 установлен с аргументом / passive, параметры сборки VStudio явно установлены на x64 со следующей строкой подключения: Provider = Microsoft.ACE.OLEDB.16.0; Источник данных = D: ... \ MyDatabase.accdb
(2 - x64 или x32) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016, установленный с аргументом / passive, PLUS AccessDatabaseEngine 2010 (32 бита), установленный с параметром / passive, для параметров сборки VStudio установлено значение AnyCPU, со следующей строкой подключения: Provider = Microsoft.ACE.OLEDB.16.0; Источник данных = D: ... \ MyDatabase.accdb
(Только 3 - x32) Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32bit), установленный с аргументом / passive, для параметров сборки VStudio задано значение x86 со следующей строкой подключения: Provider = Microsoft.ACE.OLEDB.12.0; Источник данных = D: ... \ MyDatabase.accdb
ЗАМЕТКИ ОТКАЗА
Не удалось использовать поставщик x64 ACE.OLEDB.12.0 в строке подключения, а только AccessDatabaseEngine_x64 2016, установленный как указано выше в (1).
Использование AnyCPU в настройках сборки Visual Studio не удалось в (1). Установка х64 обязательна. Возможно, это связано с тем, что AnyCPU означает, что Vstudio должен видеть поставщика x32 ACE.OLEDB.nn.0 во время компиляции.
ACE.OLEDB.12.0 2016 x32 / passive engine НЕ будет установлен, когда он увидит приложения x64. (Установщик ACE.OLEDB.12.0 2010 x32 / passive работал.)
ВЫВОДЫ
Чтобы использовать параметры сборки x64, вам необходимо иметь ядро базы данных x64 2016 года и поставщик строки подключения ACE.OLEDB.16.0 И явные параметры сборки x64 для работы с Office 365 в январе 2020 года. Использование параметра / passive упрощает установку. Благодарим того, кто опубликовал этот совет!
Чтобы использовать AnyCPU, мне нужно было установить как ACE.OLEDB.12.0 2010 x32 engine, так и ACE.OLEDB.16.0 x64 engine. Таким образом, Vstudio мог видеть как x32, так и x64 движки во время компиляции AnyCPU. Я мог бы изменить строку подключения провайдера на ACE.OLEDB.12.0 для операции x32 или на ACE.OLEDB.16.0 для операции x64. Оба работали нормально.
Чтобы использовать параметры сборки x86, вам нужно иметь ядро базы данных x32 2010 года и поставщик строки подключения ACE.OLEDB.12.0 И явные параметры сборки x86 для работы с Office 365 x32 в январе 2020 года.
источник
У меня есть похожая проблема, когда мы читаем файл 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-битный офис.
источник
Просто скачайте и установите следующий движок Access DB (X86 или X64: в соответствии с конфигурацией вашей машины) и вы увидите магию :)
https://www.microsoft.com/en-us/download/confirmation.aspx?id=13255
источник
Я следовал инструкциям, изложенным другими; установка этого патча, установка этого патча, а также Microsoft Access Database Engine 2010.
Моя проблема заключалась в том, что я использую одну и ту же библиотеку (linq2sql) на 2 сайтах на моей машине; 1 работает, а 1 нет.
В конце концов я обнаружил, что мне пришлось «включить 32-битные приложения» в расширенных настройках приложения для моего нерабочего сайта.
Теперь все отлично работает.
источник
также можете попробовать эти шаги
В SQL Server: 1.Откройте одну базу данных. 2.Нажмите в параметре «Обнаружение сервера». 3.Нажмите в «Связанные серверы». 4.Нажмите в «Поставщики». 5.Нажмите Rigth в «Microsoft.ACE.OLEDB.12.0». 6.Отключите все опции и закройте
источник
Не забудьте установить AccessDatabaseEngine на сервере для веб-приложения.
источник
У меня была та же проблема, но в этом случае поставщик microsoft-ace-oledb-12-0 уже был установлен на моей машине и работал нормально для других приложений, разработанных.
Разница между этим приложением и тем, с которым у меня возникла проблема, заключалась в том, что старые приложения работали на « локальном IIS », тогда как приложение с ошибкой было на « IIS Express (запущенном из Visual Studio»). Так что я сделал ...
источник
У меня был база данных Microsoft Access Engine 2010 Redistributable уже установлен на моей машине , но по - прежнему получать поставщик Microsoft ACE OLEDB ошибки.
Затем я вспомнил, что недавно обновился до Office 2016, поэтому, возможно, мне следует попробовать переустановить Microsoft Access Database Engine 2010 Redistributable . И это решило проблему на моей машине.
Итак, если вы обновили MS Office до другой версии или даже отремонтировали / переустановили MS Office, попробуйте переустановить Microsoft Access Database Engine 2010 Redistributable, прежде чем тратить время на поиск других исправлений. Удачи!
источник
1.) Проверьте строку подключения с ConnectionStrings.com .
2.) Убедитесь, что у вас установлен правильный движок базы данных. Это были два движка базы данных, которые помогли мне.
Microsoft Access Database Engine 2010 распространяемый
Драйвер системы Office 2007: компоненты подключения к данным
3.) Возможно, проблема в том, что вашей целевой платформой сборки является «Любой процессор», возможно, это должен быть «X86» (Свойства, Сборка, Платформа Target).
источник
Если вы получаете эту ошибку при попытке использовать ACE из приложения ASP.NET, наиболее вероятной причиной является то, что вы установили одну из 32-разрядных версий. По умолчанию IIS в 64-разрядной операционной системе будет запускать приложения в 64-разрядном рабочем процессе. 64-разрядные процессы не могут загружать 32-разрядные библиотеки DLL. Когда сделан вызов поставщику ACE, 64-битный процесс попытается найти 64-битную DLL. Если его не существует, вы получите сообщение об ошибке, которое привело вас сюда.
В этом случае у вас есть два варианта. Во-первых, вы можете установить 64-битную версию 2010 года. Если у вас установлена 32-битная версия 2007 года, вы можете просто установить вместе с ней 64-битную версию 2010 года. Если у вас установлена 32-разрядная версия 2010, вам нужно удалить ее, а вместо этого загрузить и установить 64-разрядную версию 2010. Нельзя одновременно устанавливать 32- и 64-разрядные версии поставщика 2010. Если вы выполняете установку на своем компьютере разработчика, вы также можете быть ограничены разрядностью любых существующих установок Office.
Второй вариант - изменить пул приложений в IIS, чтобы включить 32-разрядные приложения. Если вы используете полную версию IIS, вы можете использовать для этого инструмент управления (Панель управления »Администрирование» Диспетчер служб IIS).
Для большего понимания, пожалуйста, обратитесь по ссылке ниже
источник
Я получил эту ошибку при импорте данных из файла Excel в MS-SQL. Поставщик уже был установлен (64-разрядный), и это удивило меня, почему он не работал. Поэтому все, что я сделал, это нашел приложение Import / Export, используемое здесь, т.е. .EXE. И я нашел это в
Затем я запустил .exe напрямую, чтобы выполнить импорт данных. И это сработало!
источник
Это сработало для меня прямо сейчас.
Но для вашего пакета приложений вы можете использовать любое из следующих решений:
Или
источник