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

294

Я пытаюсь получить данные из файла 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.

  • 1
    Просто тангенциальный комментарий: использование OLEDB для чтения файла Excel является древней технологией, очень медленной и, как вы обнаружили, требует установки дополнительных пакетов вручную на целевой машине. (Конечно, вопрос был задан в 2011 году.) Скорее используйте ClosedXml (доступный на NuGet), который работает прямо из коробки.
  • 2
    @ShaulBehr Было бы неплохо, но ClosedXml работает только для файлов .xlsx, а не .xls
Показать ещё 2 комментария
Теги:
excel
ole

31 ответ

368
Лучший ответ

Ну, вам нужно установить его. Вы ищете:

  • 39
    Я скачал эти компоненты, и они не работали для меня, мне пришлось скачать Microsoft Access Database Engine 2010, который можно распространять здесь: microsoft.com/en-in/download/details.aspx?id=13255 Я уверен, что это потому, что я Я использую MS Office 2013. Спасибо, что указали мне в правильном направлении, хотя.
  • 5
    Мне пришлось установить механизм доступа к базе данных и драйвер системы Office 2007: компоненты подключения к данным здесь microsoft.com/en-us/download/confirmation.aspx?id=23734, чтобы заставить его работать.
Показать ещё 9 комментариев
122

Доступна 64-разрядная версия "Microsoft Access Database Engine 2010 Redistributable", которая позволит вам использовать поставщик Microsoft.ACE.OLEDB.12.0:
http://www.microsoft.com/en-us/download/details.aspx?id=13255

Если вы используете загрузку из принятого ответа, вам нужно будет построить для x86, как указано @backtestbroker.com.

  • 18
    При использовании VS 2012 также убедитесь, что флажок «Предпочитать 32-разрядный» не установлен в свойствах проекта >> Сборка >> Общая конфигурация.
  • 0
    @post_erasmus - этот шаг стал для меня КЛЮЧОМ после установки 64-битной DLL. (Возможно, даже не нужно было устанавливать.) Спасибо!
Показать ещё 4 комментария
46

в зависимости от приложения (32/64 бит), используя соединение, которое вы могли бы просто установить

Резюме:

  • все офисы с 2007 по 2016 год содержат поставщика "Microsoft.ACE.Oledb.12.0"
  • в зависимости от архитектуры вашего приложения выберите подходящий механизм выполнения (32/64)
  • проверьте поставщиков с помощью команды powershell из 32-разрядной и 64-битной оболочки:

    (New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 
    
  • и вы увидите, какой поставщик может использовать ваша система

длинная история: строки можно найти с помощью http://live.sysinternals.com/strings.exe

например. на 64-битной системе с установленными 32-разрядными драйверами

strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE12\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\MSO.DLL" | findstr "ACE.O"

даже в предстоящем офисе 2016

c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\MSO.DLL
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\MSO.DLL

вы найдете строки

  • Microsoft.ACE.OLEDB

  • Microsoft.ACE.Oledb.12.0

Office 2013 также поставляется с csi.dll

c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\Csi.dll
c:\Program Files\Common Files\Microsoft Shared\OFFICE15\Csi.dll

который содержит Microsoft.ACE.OLEDB.15.0 "

и Office 2016

c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\Csi.dll
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\Csi.dll

который имеет версию Microsoft.ACE.OLEDB.16.0

  • 0
    Я получил эту ошибку в VS2015 с помощью Nuget LinqToExcel. Оказывается, потому что у меня был установлен x64 ACE, мне пришлось явно собирать для x64 (Configuration Manager), вместо того, чтобы ориентироваться на любой процессор.
  • 0
    Powershell показал, что Microsoft.ACE.Oledb.12.0 уже установлен. Однако установка пакета Access 2007 (также известный как драйвер системы Office 2007: компоненты для подключения к данным ) заставила меня начать работу. Уже в моей системе: Office 2016 Ent, Visual Studio 2017 Ent
Показать ещё 2 комментария
29

Я получил эту ошибку/исключение в Visual Studio 2010, когда я изменил свою сборку в диалоговом окне Configuration Manager с "x86" на "Any CPU". Этот драйвер базы данных OLEDB, который я понимаю, работает только в x86 и не совместим с 64-битной версией. Изменение конфигурации сборки на x86 решило проблему для меня.

  • 5
    OLEDB совместим с x64. Он может работать на любой платформе, а не только на x86, но также и на любом процессоре. Смотрите полный ответ ниже: stackoverflow.com/a/32760211/3637582
27

Первое, что вам нужно проверить, это ваша конфигурация сборки вашего приложения.

  • Если у вас создан ваш проект под платформой 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, тогда я установлен модуль базы данных доступа с использованием пассивного флага.

    • Сначала загрузите файл локально. Вы можете загрузить установку здесь: http://www.microsoft.com/en-us/download/details.aspx?id=13255
    • Установка с помощью командной строки с флагом '/passive'. В в командной строке введите следующую команду: 'AccessDatabaseEngine_x64.exe/passive'

    После этих двух шагов мне удалось запустить приложение после создания x64 или AnyCPU. Это, похоже, решило мою проблему.

Примечание. Порядок шагов, похоже, имеет значение, поэтому следуйте соответствующим образом.

  • 2
    У меня была проблема, что я переключался с 32-битного приложения на 64-битное, и оно больше не запускалось. Вторая часть ваших инструкций работает отлично! Флаг / passive допускает установку даже с 32-битным Microsoft Office.
  • 1
    Совет: Извлеките файл AccessDatabaseEngine_x64.exe в папку, чтобы получить файлы AceRedist.msi и Data.cab. Откройте командную строку в режиме администратора и выполните AceRedist.msi /passive .
Показать ещё 2 комментария
16

Я установил драйверы MS и все еще не работал у меня. Затем я нашел этот пост в блоге, который решил проблему. Прочитайте его там, иначе используйте эти два изображения (связанные с этой записью) как sumramary TL;DR:

Изображение 7102

Изображение 7103

  • 0
    Это было единственное, что сработало и для меня.
  • 0
    Собирался опубликовать это как мой вклад. Это была моя проблема. Я изменил этот параметр IIS вчера, так как один проект в моем решении был скомпилирован x86, поэтому я предполагаю, что он будет классифицировать всю программу как 32-битную.
Показать ещё 5 комментариев
13

Для всех тех, кто все еще затронут этим.

Я получаю ошибку...

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

... как описано OP, Шайлеш Саху.

У меня 64-битная Windows 7.

Моя проблема заключается в сценариях PowerShell, но использует строку подключения, похожую на сообщение OP, поэтому, надеюсь, мои результаты могут быть применены к С#, 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)

(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 

... который дал мне этот результат (я сократил другие источники данных для краткости)...

SOURCES_NAME              SOURCES_DESCRIPTION                                                                       
------------              -------------------                                                                       
Microsoft.ACE.OLEDB.15.0  Microsoft Office 15.0 Access Database Engine OLE DB Provider

Как вы можете видеть, у меня есть Microsoft.ACE.OLEDB. 15.0 (пятнадцать) не Microsoft.ACE.OLEDB. 12.0 (двенадцать)

Итак, я поменял мою строку подключения на 15 и работал.

Итак, быстрый фрагмент PowerShell, чтобы продемонстрировать, как программировать версию...

$AceVersion = ((New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | Where-Object { $_.SOURCES_NAME -like "Microsoft.ACE.OLEDB*" } | Sort-Object SOURCES_NAME -Descending | Select-Object -First 1 SOURCES_NAME).SOURCES_NAME

$connString = "Provider=$AceVersion;Data Source=`"$filepath`";Extended Properties=`"Excel 12.0 Xml;HDR=NO`";"

изменен, чтобы выбрать последнюю версию ACE, если более одного

Надеюсь, кто-нибудь, кто найдет это, теперь может проверить, какая версия OLEDB установлена ​​и использовать соответствующий номер версии.

  • 0
    Привет, я пытаюсь читать листы Excel с PowerShell. Файлы Excel хранятся в библиотеке документов SharePoint, и на сервере нет установки Excel. У меня Windows Server 2008 R2. Я установил Office System Driver: Компоненты подключения к данным, однако, когда я запускаю ваш запрос не может видеть Microsoft.ACE.OLEDB. У вас есть идея об этом? а какие-нибудь предложения? Заранее спасибо.
  • 3
    Я нашел ответ. Я попросил нашего системного администратора установить MS Access Database Engine. Он установил версию x86. Когда я снова запустил запрос в PowerShell x86, я увидел ACE.OLEDB.
Показать ещё 1 комментарий
13

Если вы используете 64-битную, но все еще имеющую проблему даже после установки AccessDatabaseEngine, см. этот пост, она решила проблему для меня.

то есть. Вам нужно установить этот AccessDatabaseEngine

4

Вам нужно изменить платформу решений с "Любой процессор" на "x86" или "x64" на основе битности офисной установки.

Этапы приведены ниже:

  • Щелкните правой кнопкой мыши файл решения в обозревателе решений: Изображение 7104

    1. Нажмите "Диспетчер конфигурации".
    2. Нажмите "Активная платформа", если x86 уже существует, выберите это, а затем нажмите "Создать". Изображение 7105

    3. Выберите x86 или x64 из раскрывающегося списка новой платформы: Изображение 7106

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

3

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

Перейти к

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

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

  • 0
    Ух ты, много часов пробуешь другие решения, только твое исправление! Спасибо
3

syp_dino,

Решение для меня, как вы предложили для поставщика "Microsoft.ACE.OLEDB.12.0", не зарегистрировано на локальном компьютере. ошибка заключается в том, чтобы изменить активную платформу решения с любого "процессора", на "x86".

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

  • 0
    Это исправило это для меня, спасибо +1
  • 0
    Вы можете запустить его на любой платформе, НЕ ТОЛЬКО x86, но также и на любом процессоре. Смотрите мой ответ ниже: stackoverflow.com/a/32760211/3637582
3

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

Вам нужно изменить платформу активного решения с "Любой процессор" на "x86".

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

Из CodeProject.com

  • 0
    Вы можете запустить его на ЛЮБОЙ платформе, НЕ ТОЛЬКО «x86», но также как «Любой ЦП» или «x64». Смотрите полный ответ ниже: stackoverflow.com/a/32760211/3637582
2

Сначала проверьте, какая версия 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

2

У меня возникла эта проблема при попытке импортировать данные из файла excel (xlsx) в базу данных SQL Server с помощью SSMS 2014.

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

2

Просто загрузите и установите следующий механизм доступа к базе данных (X86 или X64: в соответствии с конфигурацией вашего компьютера) и см. волшебство:)

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

2

Мне удалось исправить это, выполнив шаги в этой статье: http://www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0-provider-is-not-registered-on-the-local-machine

Ключевым моментом для меня было следующее:

При отладке с помощью IIS

по умолчанию Visual Studio использует 32-разрядную версию. Вы можете изменить это из Visual Studio, выбрав "Инструменты" "Опции" Проекты и Решения "Веб-проекты" Общие и выбор

"Используйте 64-битную версию IIS Express для веб-сайтов и проектов"

После проверки этого параметра, после чего целевая платформа платформы моего проекта вернется к "Any CPU" (я установил ее на x86 где-то в процессе устранения неполадок), я смог преодолеть эту ошибку.

  • 1
    Спасибо, большинство других ответов предназначены для перехода на 32 бит, но это поможет вам перейти на 64 бит.
2

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

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

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

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

Решение

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

AccessDatabaseEngine_x64.exe/passive

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

Примечание:

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

  • 0
    Но Microsoft против этого решения. Из-за этого исправления мало кто из моих клиентов наблюдает искажения в других программах Office.
1

Если вы получаете эту ошибку при попытке использовать 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).

Подробнее см. ниже ссылка

1

У меня уже была установлена ​​ Microsoft Access Database Engine 2010 Redistributable, уже установленная на моем компьютере, но по-прежнему была получена ошибка Microsoft ACE OLEDB Provider.

Затем я вспомнил, что недавно обновился до Office 2016, поэтому я могу попробовать переустановить Microsoft Access Database Engine 2010 Redistributable. И это устранило проблему на моей машине.

Итак, если вы обновили до другой версии MS Office или даже отремонтировали/переустановили свой MS Office, попробуйте переустановить Microsoft Access Database Engine 2010 Redistributable, прежде чем тратить время на поиск других исправлений. Удачи!

1

У меня была такая же проблема, но в этом случае microsoft-ace-oledb-12-0-provider уже был установлен на моем компьютере и отлично работал для разработки другого приложения.

Разница между этими приложениями и тем, с которыми я столкнулся с проблемой, заключалась в том, что старые приложения выполнялись на " Local IIS", тогда как ошибка с ошибкой была " IIS Express (работает из Visual Studio). Так что я сделал -

  • Щелкните правой кнопкой мыши на имени проекта.
  • Перейдите в раздел Свойства
  • Перейдите в веб-вкладку справа.
  • Под серверами выберите Local IIS и нажмите кнопку "Создать виртуальный каталог".
  • Запустите приложение еще раз, и он сработал.
1

Не забудьте установить AccessDatabaseEngine на сервер для веб-приложения.

1

1.) Проверьте строку подключения ConnectionStrings.com.

2.) Убедитесь, что установлен правильный механизм базы данных. Это были две базы данных, которые помогли мне.

Распространяемый Microsoft Access Database Engine 2010

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

3.) Может возникнуть проблема с вашей целевой платформой сборки: "Любой процессор", возможно, она должна быть "X86" ( "Свойства", "Сборка", "Платформа" ).

  • 0
    Вы можете запустить его на ЛЮБОЙ платформе, НЕ ТОЛЬКО «x86», но также как «Любой ЦП» или «x64». Смотрите полный ответ ниже: stackoverflow.com/a/32760211/3637582
  • 0
    Хорошо, хорошо, я не думаю, что это было так для меня ... так что все же стоит упомянуть, что чья-то целевая платформа сборки может быть частью проблемы.
1

также можно попробовать выполнить следующие действия.

В SQL Server, 1. Откройте одну базу данных 2. Выберите в опции "Server Obtect" 3.Clic в 'Linked Servers' 4.Clic в "Провайдерах" 5.Clic Rigth в 'Microsoft.ACE.OLEDB.12.0' 6.Установите все параметры и закройте

1

Я следовал инструкциям других; установив этот патч, установив этот патч, а также Microsoft Access Database Engine 2010.

Моя проблема заключалась в том, что я использую одну и ту же библиотеку (linq2sql) на двух сайтах на моей машине; 1 работает, а 1 - нет.

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

Теперь все работает отлично.

0

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

0

Это сработало для меня прямо сейчас.

  1. Посетите эту страницу, затем загрузите соответствующий пакет для своего компьютера (AccessDatabaseEngine.exe или AccessDatabaseEngine_X64.exe)
  2. Установите это.
  3. Наслаждайтесь... Ваши коды теперь работают...

Но для вашего пакета приложений вы можете использовать любые следующие решения:

  1. Перейдите в раздел "C:\Program Files (x86)\Common Files\microsoft shared" или "C:\Program Files\Common Files\Microsoft Shared" и поместите каталог "OFFICE14" в том же месте вашего файла пакета.

Или

  1. Прикрепите два проекта (в пункте 1) в установочном пакете.
0

Как я решил это на разных компьютерах:

У меня есть 32-разрядная машина Windows 7 с Visual Studio 2012, у которой не было базы данных Access, потому что у меня нет Office 2010. Я скопировал тот же источник, что и в моей 64-разрядной машине под Windows 7.

Итак, я установил AccessDatabaseEngine на эту 32-битную машину Windows 7 после загрузки ее в соответствии с приведенными выше предложениями от других, и все было хорошо.

У меня все еще была проблема с моей 64-разрядной машиной с Windows 7, у которой уже есть Office 2010, который уже включает Access 2010. Как я решил на этом компьютере, я перешел в PROJECT, выбранные свойства и на платформе Target был настроен любой CPU Я проверил Prefer 32-bit. Recompiled/Build и поставщик Microsoft.ACE.OLEDB.12.0 не зарегистрирован в сообщении локальной машины.

  • 0
    Судя по всему, Office, который я купил, по умолчанию устанавливается как для 32-битной, если вы не покупаете Office для 64-битных машин, я не эксперт в этом, но это мое предположение - я узнаю больше, если это правда. Если я собираюсь использовать его с полным 64-битным потенциалом, тогда мне нужно скачать 64-битную версию AccessDatabaseEngine, как предложили другие выше. На данный момент, поскольку у меня был 32-битный движок, я должен был сделать так, чтобы мое приложение предпочитало 32-битный процессор.
0

Я получил эту ошибку при импорте данных из файла Excel в MS-SQL. Поставщик уже был установлен (64-разрядный), и это меня удивило, почему это не сработало. Итак, все, что я сделал, это найти приложение импорта/экспорта, используемое здесь, то есть .EXE. И я нашел его в

C:\Program Files\Microsoft SQL Server\130\DTS\Binn\DTSWizard.exe

Затем я запустил .exe напрямую, чтобы выполнить импорт данных. И это сработало!

0
  • Я столкнулся с той же проблемой в течение нескольких дней. Я установил OLEDB драйверы для 64-битных, попробовали 32-разрядные, которые доступны на веб-сайт Microsoft.
  • Я попытался переустановить 64-разрядную версию Office так или иначе это не сработало. Пробовал разрешить 32-битное приложение в пуле IIS правда.
  • Tried Изменение среды проекта на X86, AnyMachine, Mixed. И почти попробовал весь патч, который я мог найти в Интернете. Но все решение разочаровало меня.
  • Хотя я наконец узнал, что поставщик, который мы скачивали, был последним и не работал вместе с ним.
  • Я удалил его и установил драйверы oledb 14.0.7015.1000. У меня нет ссылки для него, так как я получил ее из ресурсов компании, вам может понадобиться Google, но она работает. Я пришел на этот DOWNLOAD LINK, и он тоже работал... однако это версия 14.0. 6119.5000, но он сработал.
0

Это зависит от того, где вы установили офис, если у вас есть x64-разрядный офис, тогда вы должны скомпилировать приложение как x64, чтобы он мог запускаться, поэтому, если вы хотите, чтобы он запускался на x36, вы должны установить офис x86 для принятия, я пробовал все решения выше, но никто не работал до тех пор, пока я не понял, что у меня был офис x64bit, и поэтому я построил приложение как x64 и работал

  • 0
    Неправильно, я установил Office и должен был установить Соединитель БД независимо.
  • 2
    Это решает мою проблему, когда ничего из вышеперечисленного не работает для меня!
-1

//Чтение файла .xls

string strConnection = "";<br/>

string FileName = Server.MapPath("Student.xls");

strConnection = @"Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + FileName + ";Extended Properties='Excel 8.0; HDR=Yes;IMEX=1;'";<br/>

try
{
    OleDbConnection conn1 = new OleDbConnection(strConnection);
    conn1.Open();
    DataTable dt = new DataTable();
    dt = conn1.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" });

    Object sheetName = dt.Rows[0]["TABLE_NAME"];
    dt.Clear();
    dt.Columns.Clear();
    OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [" + sheetName.ToString() + "]", conn1);
    da.TableMappings.Add("Table", "0");
    da.Fill(dt);

    for (int i = 0; i < dt.Rows.Count; i++)
    {
        string ID = dt.Rows[i][0].ToString();
        string Name = dt.Rows[i][1].ToString();
        string City = dt.Rows[i][2].ToString();
        string Marks = dt.Rows[i][3].ToString();
    }
    conn1.Close();
}
catch
{
    throw;
}
//To Read xlsx file use following code
string strConnection = "";  <br/>
string FileName = Server.MapPath("Student.xlsx"); <br/>
strConnection = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties='Excel 12.0 Xml;HDR={1};IMEX=1;'";<br/>

try
{
    OleDbConnection conn1 = new OleDbConnection(strConnection);
    conn1.Open();

    DataTable dt = new DataTable();
    dt = conn1.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" });

    Object sheetName = dt.Rows[0]["TABLE_NAME"];
    dt.Clear();
    dt.Columns.Clear();
    OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [" + sheetName.ToString() + "]", conn1);
    da.TableMappings.Add("Table", "0");
    da.Fill(dt);
    //int idx=0;
    //int j=0;
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        string ID = dt.Rows[i][0].ToString();
        string Name = dt.Rows[i][1].ToString();
        string City = dt.Rows[i][2].ToString();
        string Marks = dt.Rows[i][3].ToString();
    }

    conn1.Close();
}
catch
{
    throw;
}

//Теперь установите AccessDatabaseEngine.exe из раздела http://www.microsoft.com/en-us/download/confirmation.aspx?id=23734

Он будет работать на 100%

Ещё вопросы

Сообщество Overcoder
Наверх
Меню