Загрузить файл Excel в классическом ASP на Windows 2003 x64 с помощью драйверов Office 2010 - PullRequest
0 голосов
/ 16 января 2010

Итак, мы переносим старое веб-приложение с 32-разрядного сервера на более новый 64-разрядный сервер. Приложение в основном классическое приложение ASP. Пул настроен для работы в 64-битном режиме и не может быть установлен в 32-битном режиме из-за других компонентов. Однако это нарушает старое использование драйверов Jet и последующий анализ файлов Excel.

После некоторых исследований я скачал 64-разрядную версию нового 2010 Office System Driver Beta и установил его. Предположительно, это позволяет открывать и читать файлы Excel и CSV.

Вот фрагмент кода с ошибками. Думаю, я следовал рекомендациям на странице загрузки:

Set con = Server.CreateObject("ADODB.Connection")
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.14.0;Data Source=" & strPath & ";Extended Properties=""Excel 14.0;"""
con.Open

Есть идеи, почему?

ОБНОВЛЕНИЕ: мои извинения. Я забыл важную часть, сообщение об ошибке:

ADODB. Ошибка соединения '800a0e7a'
Провайдер не найден Может не
быть правильно установленным.
/vendor/importZipList2.asp, строка 56

Я установил и удалил / переустановил дважды.

Ответы [ 5 ]

1 голос
/ 14 апреля 2010

Некоторое время назад я столкнулся с подобной проблемой и обнаружил, что в пакете установщика для драйвера ACE 14 действительно есть ошибка. Драйвер регистрируется как «Microsoft.ACE.OLEDB.12.0». В моем случае я мог заставить вещи работать, просто изменив строку подключения на 12, а не на 14.

Свидетельство об ошибке: Microsoft Connect

0 голосов
/ 07 декабря 2010

Похоже, что это "14" ("14.0") для Excel. Но «12» («12,0») для ACE.

Из этой загрузки:

http://www.microsoft.com/downloads/en/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en

Я нашел этот фрагмент:

** 2. Если вы являетесь разработчиком приложения, использующего OLEDB, задайте для аргумента Provider свойства ConnectionString значение «Microsoft.ACE.OLEDB.12.0»

fЕсли вы подключаетесь к данным Microsoft Office Excel, добавьте «Excel 14.0» в Расширенные свойства строки подключения OLEDB. **

ОДНАКО !!!

Инструкции со страницы загрузки кажутся неправильными .... что вызывает некоторую путаницу.

Отсюда: http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/686d8ebb-0da3-4f0c-bf16-9c650f8dcb32

// Цитата // Paul P C Инструкции неверны. Это должен быть Excel 12.0. Я хотел бы, чтобы они исправили эту ошибку на сайте загрузки. // конец цитаты

Я убедился, что эта строка подключения работает для меня: "Provider = Microsoft.ACE.OLEDB.12.0; Источник данных = 'C: \ MyFile.xls'; Расширенные свойства =" Excel 12.0; HDR = NO; IMEX = 1; '; "

0 голосов
/ 28 апреля 2010

Я столкнулся с той же проблемой, наконец, я понял, что ошибка в том, что строка подключения должна быть изменена в 64-битной!

Чтобы получить правильный вариант, установите Visual Basic 6 и перетащите элемент управления доступом к данным Microsoft через его мастер, откройте нужный файл и позвольте ему написать строку подключения.

0 голосов
/ 19 января 2010

Здесь http://forums.asp.net/p/1128266/1781961.aspx - это предложение разделить ваше приложение на 32- и 64-битные компоненты и передавать данные через COM. Цитировать:

Что вам нужно сделать, это разделить ваше приложение на 32-битную и 64-битную части, используйте COM-взаимодействие для пересечения 64/32-битной границы. Например, удалите код (просто простую библиотеку классов, скомпилированную как 32-разрядную), которая извлекает данные Excel в COM + (System.EnterpriseServices) как приложение типа сервера, и вызывайте эти методы сервера из 64-разрядной службы Windows. Именно поэтому System.EnterpriseServices созданы для.

0 голосов
/ 16 января 2010

Это может быть версия Excel в параметре расширенных свойств. Excel 14 для Office 2010. Хотя драйвер может быть Office 2010, я бы предположил, что ваши документы Excel не являются.
Excel 2007 - v12
Excel 2003 - v8
От http://www.connectionstrings.com для Excel 2007:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";

Вы можете попробовать заменить ACE.OLEDB.12.0 на ACE.OLEDB.14.0 для соответствия версии драйвера .

...