asp读取excel .xls格式文件

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了。

有话要说