Назад | Перейти на главную страницу

Открытие электронной таблицы Excel в .NET в системе x64

Я не могу открыть электронную таблицу Excel с .NET на сервере x64, используя следующую строку подключения

"Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" + filePath + "; Extended Properties = Excel 8.0;"

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

Я установил драйвер системы Office 2007: компоненты подключения к данным и попытался использовать Microsoft.ACE.OLEDB.12.0 и эту строку подключения.

"Provider = Microsoft.ACE.OLEDB.12.0; Data Source =" + filePath + "; Extended Properties = Excel 8.0;"

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

Я искал в Google, и единственный ответ - это 64-битная проблема, у кого-нибудь есть идея, как это исправить?

Вы можете использовать Open XML SDK, чтобы открыть файл Excel 2007 и прочитать или изменить его содержимое.

http://www.microsoft.com/downloads/details.aspx?FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0&DisplayLang=en

При этом программа Excel не используется, а открывается как XML-документ. Таким образом вы обойдете 64-битную проблему.

Однако это может потребовать серьезных изменений в вашей программе.

Все драйверы Office являются только 32-разрядными, поэтому вы не можете использовать файлы Office из приложений x64; проблема чаще всего возникает, когда приложения ASP.NET в системах x64 пытаются открыть базы данных Acess.

Вам нужно заставить ваше приложение работать в режиме x86; это приложение для Windows или ASP.NET? В ASP.NET вы можете сделать это, как указано Вот.

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

Вы можете сделать это только в 32-битной версии фреймворка. если это приложение ASP.net, вы можете изменить сервер, чтобы он запускался в 32-битной среде. Если это собственное приложение, вам придется перекомпилировать (хотя это, вероятно, лучше всего спросить в stackoverflow)

Я не пробовал, но по-видимому ключ / пассивная установка может быть обходным путем с 64-битный Ace.