Чтение из Excel: ошибка Microsoft.Jet.OLEDB.4.0 в 64-битных системах - PullRequest
6 голосов
/ 09 сентября 2010

Я читаю содержимое листа Excel в своем приложении, используя:

 OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0");
 _myDataSet = new DataSet();
 OleDbDataAdapter myCommand = new OleDbDataAdapter(" SELECT * FROM [" + "My Sheet" + "$]", con);

myCommand.Fill(_myDataSet);
con.Close();

В 64-разрядных системах происходит сбой с ошибкой:

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

Как заставить это работать на 64-битных машинах?

Ответы [ 4 ]

10 голосов
/ 12 января 2011

Microsoft выпустила дистрибутив драйвера с 64-битным драйвером, который работает для Access и Excel. Вы можете загрузить как 64-битную, так и 32-битную версии с сайта MS downloads . Страница загрузки также содержит краткое описание того, что вам нужно изменить в строке подключения для ссылки на драйвер ACE.

В двух словах, вы устанавливаете 64-битный дистрибутив драйвера, а затем изменяете строку подключения на что-то вроде:

string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=""Excel 8.0;IMEX=1""";
5 голосов
/ 09 сентября 2010

Microsoft.Jet.OLEDB не имеет 64-битной версии, только 32-битной. Скомпилируйте ваше приложение как 32-битное (Цель платформы: x86 в варианте сборки).

1 голос
/ 27 мая 2013

Забудьте об этом, используйте эти dll из codeplex, которые решают эту проблему.http://exceldatareader.codeplex.com/

1 голос
/ 09 сентября 2010

Я не верю, что это работает ... см. Этот связанный вопрос: OleDB не поддерживается в 64-битном режиме?

Проблема заключается в том, что COM / Interop не предназначендля 64-битных сред, поэтому его нельзя зарегистрировать в 64-битном режиме.

Вы можете принудительно запустить приложение .NET в 32-битном режиме на 64-битной машине, что позволит вам получить доступ кФункциональность OleDB.

...