excel|odbc|資料 http://www.chinaasp.com/
在ASP中通過ODBC調用Excel中的資料方式和普通的通過ODBC調用資料庫的方式有
一些不同的地方。下面將介紹如何通過ODBC在ASP中使用Excel的資料。
在使用的過程中,要注意的是你需要使用的ODBC驅動為:Microsoft ODBC Driver for Excel.
下面給出一個例子來具體說明如何調用的過程:
1。在Excel的試算表中建立一個叫Range的表單
a)在Excel檔案ADOtest.xls中的sheet1裡隨便輸入下面的測試資料:
column1 column2 column3
rr this 15
bb test 20
ee works 25
注意事項:
如果你的Excel試算表中某一列同時包含了文本和數位話,那麼Excel的ODBC驅動將不能夠正常
處理這一行的資料類型,你必須要保證該列的資料類型一致。:
i.Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
The request properties can not be supported by this ODBC Driver.
ii.Microsoft OLE DB Provider for ODBC Drivers error '80004005'
The query is not updateable because it contains no searchable columns to use as a
hopeful key.
iii.Microsoft OLE DB Provider for ODBC Drivers error '80004005'
Query based update failed. The row to update could not be found.
b)使用滑鼠選中你的資料所在的所有行和列
c)從菜單中選擇Insert\Name\Define命令.
d)輸入myRange1,然後單擊OK退出
注意事項:
i)ADO假設Excel中的第一行為欄位名.所以你定義的範圍中必須要包括第一行的內容
ii)Excel中的列名(即欄位名)不能夠包含數字. Excel的驅動在遇到這種問題時就會出錯的。
例如你的列名名為“F1”
e)建立一個ODBC系統DSN指向這個ADOTest.xls檔案:(這個過程我就不詳細說了)
注意事項:
i)DSN中要選擇Access97版本
ii)在NT中設定好匿名帳號對該試算表檔案相應的存取權限
iii)如果你的使用權限設定不正確的話,有可能會得到如下出錯資訊:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Excel Driver] The Microsoft Jet database engine
cannot open the file '(unknown)'. It is already opened exclusively
by another user, or you need permission to view its data.
f)最後一步,就是在ASP中調用這個ODBC,代碼如下:
<%@ LANGUAGE="VBSCRIPT" %>
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "ADOExcel"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.ActiveConnection = objConn
objRS.CursorType = 3
objRS.LockType = 2
objRS.Source = "Select * from myRange1"
objRS.Open
%>
<br>
<%
Response.Write("Original Data")
Response.Write("<TABLE><TR>")
For X = 0 To objRS.Fields.Count - 1
Response.Write("<TD>" & objRS.Fields.Item(X).Name & "</TD>")
Next
Response.Write("</TR>")
objRS.MoveFirst
While Not objRS.EOF
Response.Write("<TR>")
For X = 0 To objRS.Fields.Count - 1
Response.write("<TD>" & objRS.Fields.Item(X).Value)
Next
objRS.MoveNext
Response.Write("</TR>")
Wend
Response.Write("</TABLE>")
objRS.MoveFirst
objRS.Fields(0).Value = "change"
objRS.Fields(1).Value = "look"
objRS.Fields(2).Value = "30"
objRS.Update
Response.Write("<br>Data after the update")
Response.Write("<TABLE><TR>")
For X = 0 To objRS.Fields.Count - 1
Response.Write("<TD>" & objRS.Fields.Item(X).Name & "</TD>")
Next
Response.Write("</TR>")
objRS.MoveFirst
While Not objRS.EOF
Response.Write("<TR>")
For X = 0 To objRS.Fields.Count - 1
Response.write("<TD>" & objRS.Fields.Item(X).Value)
Next
objRS.MoveNext
Response.Write("</TR>")
Wend
Response.Write("</TABLE>")
objRS.Close
Set objRS = Nothing
objConn.Close