Excel也是一种数据库,跟Access类似,其读取方法也类似。
这里有一个简单的Excel表,文件名字为Excel.xls:
咱就这个为例子来说明。
创建Excel连接代码:
Dim XlsConn,xrs
Set XlsConn=Server.CreateObject("Adodb.Connection")
XlsConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("Excel.xls")&";Extended Properties=Excel 8.0"
是不是跟连接Access文件很像呢?呵呵~
连接创建好了,就可以创建记录集查询Excel里面的数据了。
Set xrs=XlsConn.Execute("Select * From [Sheet1$]")
跟其他数据库的查询几乎是一样的,要注意的地方就是表名,Excel里面,默认会有三张表,Sheet1、Sheet2、Sheet3,从上面的例子也可以看到,需要注意查询时表名后面要加“$”符;查询结果:
xrs(0)="数据列0"
xrs(1)="1"
xrs(2)="2"
xrs(3)="3"
xrs(4)="4"
xrs(5)="5"
这里有一点需要注意,如果一列中有多行,有的行的值是数字,有的行是字符,ASP去取值的时候数字行会读取出错,是为空的。所以得想办法把数字行也变成字符型,比如加个’号去,读取出来之后再替换回去。
多行自然是用xrs.Movenext去循环取得了。够简单吧!
最后贴一段代码:
Dim rs
Set rs=Server.CreateObject("Adodb.Recordset")
rs.Open "Select Top 1 * From Pro Where 1=2",Conn,3,2
Dim XlsConn,xrs
Set XlsConn=Server.CreateObject("Adodb.Connection")
XlsConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("Excel.xls")&";Extended Properties=Excel 8.0"
Set xrs=XlsConn.Execute("Select * From [Sheet1$]")
Do While Not xrs.Eof
rs.Addnew
rs("iClear")= xrs(0)
rs("Detail")= xrs(1)
rs.Update
xrs.Movenext
Loop
xrs.Close()
Set xrs=Nothing
XlsConn.Close()
Set XlsConn=Nothing
rs.Close()
Set rs=Nothing
明了, Thanks!
其实你这样是有问题的,jet 4.0 也许在你的机子上能跑这个程序,实际在其他机子上是跑不了的。。。
@07552647814 这个是Excel版本的问题,找相对应的驱动程序连接语句就好了。