2015-02-03 5 views
0

Мы старый сайт ASP Классический, который был запущен на Windows 2003 и должен быть перемещен в 2012 годуASP Классический текст Драйвер для Windows 2012

Большая часть сайта работает отдельно от участка, где мы должны быть способный загружать на сервер CSV или Excel документы, полные категорий.

Я знаю, что во время Windows 2008 не было драйверов Microsoft, поэтому нам так долго пришлось покидать сайт в 2003 году, но мы сейчас пытаемся решить эту проблему либо -связывание правильного текста MS Text/CSV драйвер/XLS для Windows, 2012 -buying компонент, чтобы сделать работу для нас

После поиска я нашел эту статью MS KB>http://www.microsoft.com/en-us/download/details.aspx?id=13255

Который говорит, что это должен делать эту работу, однако, когда я загрузить Excel с следующий код, который я получил из статьи КБ

Set objConnectionCSV = Server.CreateObject("ADODB.Connection")  
Set objCSVRecs  = Server.CreateObject("ADODB.Recordset") 

'* Get path and extension of uploaded file - earlier on using ASPUpload 
strPath = objFile.Path 
strExt = lcase(Right(strPath,Len(strPath)-InStrRev(strPath,"."))) 

'* try with new driver code 
With objConnectionCSV 
.Provider = "Microsoft.ACE.OLEDB.12.0"    

'* it errors on this line! 
.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & strPath & ";""" 

'* old code which I don't get to which required data to be on sheet 1 
On Error Resume Next 
Set objCSVRecs = .Execute("[Sheet1$]") 
If Err.number <> 0 Then 
    strErrMessage = "Error opening file: " & Err.number & " " & Err.Description & ";" 
    Err.Clear      
End If 
End With 

Я получаю эту ошибку на линии

.Open "Driver = {Microsoft Excel Driver (* .xls, * .xlsx, * .xlsm, * .xlsb)}; DBQ =" & strPath & " ; ""»

Microsoft Access Database Engine ошибка '80004005'

не удался найти устанавливаемый ISAM.

Это правильный текстовый драйвер?

Нужно ли что-то еще делать, например, настройки IIS или другой код?

Мы перезапустили IIS и играли с разрешениями, и он работает в режиме 64 бит.

У кого-нибудь есть решение этой проблемы или известно об обходном пути, например, компонент, который я мог бы использовать/купить, поскольку я не хочу начинать писать парсер файлов в ASP classic самостоятельно в этот момент времени.

Даже если я могу обрабатывать файлы CSV, а не XLS, XLSX и т. Д., Тогда это было бы достаточно хорошо, но мне просто нужно знать код для использования, правильную строку подключения и все, что нужно установить или установить в IIS.

Спасибо за вашу помощь заранее.

ответ

0

Похоже, что OLEDB и ODBC используются одновременно.

OLEDB

.Provider = "Microsoft.ACE.OLEDB.12.0"    

ODBC

.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & strPath & ";""" 

Поскольку этот источник данных API, совершенно различен и выполнить ту же задачу. Вот answer StackOverflow, в котором обсуждаются различия.

Удалить или прокомментировать эту строку.

.Provider = "Microsoft.ACE.OLEDB.12.0" 

Update

Заменить

Set objCSVRecs = .Execute("[Sheet1$]") 

с этим

Set objCSVRecs = .Execute("SELECT * FROM [Sheet1$]") 

Код ниже была установка на Windows, 2012 R2 VM.

Данные: Для этой демонстрации была создана электронная таблица Excel с идентификаторами полей, LastName, FirstName.

enter image description here

<% 
Set objConnectionCSV = Server.CreateObject("ADODB.Connection")  
Set objCSVRecs  = Server.CreateObject("ADODB.Recordset") 

'Important: Be sure your strPath variable contains a value. For testing purposes, I hard coded a value. 
strPath = objFile.Path 
strExt = ".xlsx" 

'Opening tags for asp page 
response.write "<html><body>" 

With objConnectionCSV 
    .Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & strPath & ";""" 

    On Error Resume Next 
    Set objCSVRecs = .Execute("select * from [Sheet1$]") 

    Do While Not objCSVRecs.EOF 
      response.write "Data row: " & objCSVRecs("id").Value & " Name = " & objCSVRecs("LastName").Value & ", " & objCSVRecs("FirstName").Value & "<br/>" 
     objCSVRecs.MoveNext 
    Loop 

    If Err.number <> 0 Then 
     strErrMessage = "Error opening file: " & Err.number & " " & Err.Description & ";" 
     Err.Clear      
    End If 
End With 

'End tags for asp page 
response.write "</body></html>" 
%> 

Результаты

enter image description here

+0

Я устал, что и до сих пор есть ошибка «-2147217900 [Microsoft] [ODBC Excel Driver] Invalid SQL заявление; ожидается 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' или 'UPDATE' " – MonkeyMagix

+0

Я попытался использовать CommandText, поскольку в статье предлагается, чтобы я должен был удалить Поставщик и попробовал все 3 из этих операторов, поскольку я не знаю, какой синтаксис я должен использовать. Просто для старого драйвера мне пришлось выбирать из листа1, чтобы он работал >>>> С objConnectionCSV \t \t .Открыть «Driver = {Драйвер Microsoft Excel (* .xls, * .xlsx, * .xlsm, * .xlsb)}; DBQ = "& strPath & "; """ \t '* ошибки здесь \t' .CommandText = "SELECT * FROM [" & objFile.FileName & "]; " \t» .CommandText = "SELECT * FROM [" & objFile .FileName & "] [Sheet1 $];" \t .CommandText = "SELECT * FROM [Sheet1 $];" \t Set objCSVRecs = .Execute End With – MonkeyMagix

+0

я получаю «Microsoft OLE DB Provider для драйверов ODBC ошибка '80040E14' [Microsoft] [ODBC Excel Driver] Лист1 $ 'не является допустимым именем. Убедитесь, что это не содержит недопустимых символов или знаков препинания и что он не слишком длинный ». – MonkeyMagix