asp讀取excel檔案
asp讀取excel檔案,就是把excel檔案看作accexx資料庫。工作表看作一個資料庫表,excel表中的列看作access表的欄位。
資料庫連接字串也與串連access類似.
以下2種方式可以讀取excel2003,也就是 .xls 格式的excel,07的 .xlsx 格式檔案不能讀取
'第一種串連方式:
set conn=Server.CreateObject("ADODB.Connection")
Driver = "Driver={Microsoft Excel Driver (*.xls)};"
DBPath = "DBQ="&server.MapPath("test.xlsx")
conn.open Driver&DBPath
'第二種串連方式
'Set conn = Server.CreateObject("ADODB.Connection")
'connStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("test.xls")&";Extended Properties='Excel 8.0;HDR=No;IMEX=1';"
'其中,hdr取值yes,no ,表示第一行是否為欄位名
'imex 取值1,2,
'其中1 正是解決此問題的關鍵(也有人說取值1,只能在連續16行中出現上訴問題才能解決,未經證實?)
'
其中2 只查到有人用,但是不清楚具體代表什麼!
'HDR=Yes這個我說一下,這代表第一行是標題,不做為資料使用 ,如果用HDR=NO,則表示第一行不是標題,做為資料來使用。系統預設的是YES.
''response.Write("connStr="&connStr)
'conn.open connStr
Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open "Select * From [sheet1$]",conn,1,1
rows=rs.recordcount
cells=rs.Fields.Count
response.Write(rows&","&cells)
由於系統的不同,代碼執行中,可能會出現如下錯誤:
Microsoft JET Database Engine 錯誤 '80004005'
未指定的錯誤
這個錯誤,大多數是因為系統安全性引起的。
解決辦法是:修改c:/windows/ 目錄下的 temp檔案夾的 許可權。
給temp檔案夾的user 寫入的許可權。
然後重新執行代碼。ok了。