2013-08-08 5 views
0

Я пытаюсь прочитать лист Excel через Microsoft.Jet.OLEDB.4.0. Я последовал за учебником и написал код и развернул его. Он работал нормально, но теперь, после долгого времени, мы изменили сервер, и теперь, когда я развернул старый код на новый сервер, он дал мне ошибку «Поставщик Microsoft.Jet.OLEDB.4.0» не зарегистрирован на локальной машине «.Чтение листа Excel с помощью OleDb

Я действительно не помню, что я сделал в прошлый раз, чтобы он работал. Я пробовал много вещей, но ничего не работало.

Я не могу использовать любую другую DLL, потому что у нас нет офиса, установленного на сервере. Может ли кто-нибудь мне направить.

ответ

1

The 'Microsoft.Jet.OLEDB.4.0' драйвер 32bit. Если вы скомпилируете приложение с целью AnyCPU как платформу и развернете приложение на 64-битной ОС, то ваш код будет выполнен как 64-битный код. В этом контексте вы не можете ссылаться на 32-битный драйвер, такой как OleDb.4.0.

Ваш лучший вариант - перекомпилировать приложение для x86 в качестве целевой платформы, а затем ваше приложение будет работать как 32-битный код, который будет запущен без проблем в 64-битной системе, и вы сможете использовать 32-разрядный OleDb.4.0.

Если это невозможно, вы должны загрузить Microsoft Access Database Engine 2010 Redistributable в 64-битной версии и установить его на целевой сервер. Также не забудьте изменить строку подключения на

string conString = "Provider=Microsoft.ACE.OLEDB.12.0;" + 
        "Data Source=path_to_your_excel_file.xls;" + 
        "Extended Properties=\"Excel 8.0;HDR=YES\""; 
+0

Steve Спасибо за ответ, я только что установил Microsoft Access Database Engine 2010 Redistributable. И когда я снова запускаю сеть, я получил эту ошибку «Не удалось найти устанавливаемый ISAM». –

+0

Проблема в том, что я не могу скомпилировать приложение, потому что у меня есть только файлы с исходным кодом, а не с dll. –

+0

Двойная цитата вокруг расширенных свойств? – Steve

Смежные вопросы