« 鄙视高手相,无视大牛人简洁的生存是一种艺术 »

在asp调用excel

某些情况下我们在asp中使用excel作为数据库,读出或者写入数据到.xls文件.adodb.connect不仅仅可以操作我们熟悉的sql/access,也可以用来操作不常使用与asp的数据库,例如foxpro/mysql/excel等.
xls文件不是严整的关系型的数据库,但是我们仍然可以使用通常所见的方法,操作其中包含的数据.和常见的桌面数据库access类比,就可以知道操作excel的办法.

1、一个.xls文件可以看成一个数据库,类似于.mdb文件,其中的每一个工作(sheet)看成数据库表,相当于access中的一个table.
2、excel中表格第一行的数据(标题)为字段名,字段名不能够包含数字.
3、如果你的Excel电子表格中某一列同时包含了文本和数字的话,那么Excel的ODBC驱动将不能够正常, 处理这一行的数据类型,你必须要保证该列的数据类型一致.

例如下面的代码

dim conn,rs,sqlstr

Set conn = Server.CreateObject("adodb.connection")
conn.open "Driver={Microsoft Excel Driver (*.xls)};" & "DBQ=" & Server.MapPath( "11.xls" )
'同上理 打开excel文件

sql="select * from [mysheet$]"
'11.xls中的表格mysheet 这个是打开该表格的方法
set rs=conn.execute(sql)
'取得记录集对象


这样我们就可以通过记录集来读取excel中的文件,同时也可以把从word/access等其他格式的文件中读取的数据insert或者update到excel中.

例子:


on error resume next
'因为很多数据是不严整的 所以需要跳过错误
dim conn,rs,sql,conn0,rs0,sql0

set conn0=server.createobject("adodb.connection")
conn0.open "DBQ="&Server.Mappath("#access.mdb")&";Driver={Microsoft Access Driver (*.mdb)};"
'我们都很熟悉的access链接 更好的是使用oledb

Set conn = Server.CreateObject("adodb.connection")
conn.open "Driver={Microsoft Excel Driver (*.xls)};" & "DBQ=" & Server.MapPath( "11.xls" )
'同上理 打开excel文件

sql="select * from [Sheet1$]"
set rs=conn.execute(sql)
'取得记录集对象


dim i
i=0
'我使用的excel文件中存放的是一些植物信息

sql0="select * from [Tb_plant]"
set rs0=server.createobject("adodb.recordset")
rs0.open sql0,conn0,3,3

do while not rs.eof
if rs("中文名")<>rs("拉丁名") then
'这里判断一下数据是不是多行公用一列
rs0.addnew
rs0("chinesename")=rs("中文名")
rs0("plantname")=rs("拉丁名")
rs0("classification")=rs("中文科名")
Rs.movenext
rs0("description")=rs("中文名") '显然下一列就是备注字段了
rs0.update
i=i+1
end if
'对于植物而言 仅有唯一的中文名和拉丁名 所以在设置access库的时候 字段不允许重复 这里需要导入不必要的数据 有些是重复的 程序这里会报错
if err then err.clear
rs.movenext
loop

rs.close
rs0.close
'.........就是关闭对象
Response.Write i&"个植物信息写入成功!"


需要特别小心的是,excel可以多列对应一行,比如我们有字段名a,b,c,它们可以在第5行公用同一个数据值.这个时候rs("a")=rs("b")=rs("c"),它们都可以取得对应的数据.

  • quote 1.laonong
  • zai IE5.5xia mian ,wo meng de wang zhan ji ben bu neng kan ,ni kan guo me ?zheng shi feng ci ya !
  • 2006-1-22 13:53:09  RevertComment

Comments.

◎ welcome to participate in the discussion

日历

Comments.

Previous.

ADMIN.