| 发表于:2007-02-02 11:30:20 楼主 |
<% on error resume next '这个很重要 后面有提示 dim conn1,conn,rs1,rs,sql1,sql '定义变量是个好习惯 set conn=server.createobject( "adodb.connection ") connstr= "dbq= "+server.mappath( "db.mdb ")+ ";defaultdir=;driver={microsoft access driver (*.mdb)} " conn.open connstr set rs=server.createobject( "adodb.recordset ") sql= "select * from xwplant " set rs=conn.EXECute(sql) '首先打开需要接受数据的access表 '表xwplant 中的字段有中文名 拉丁文名 科名 备注字段 等 set conn1 = server.createobject( "adodb.connection ") connstr1= "dbq= "+server.mappath( "11.xls ")+ ";defaultdir=;driver={microsoft excel driver (*.xls)} " conn1.open connstr1 set rs1=server.createobject( "adodb.recordset ") sql1= "select * from [sheet1$] " set rs1=conn1.EXECute(sql1) '得到可以读取excel文件的记录集对象 '必须注意的是 在excel中 第一行数据被认为是字段名 而且不能含有数字 dim i i=0 '统计写入的列数 do while not rs1.eof if rs( "中文名 ") <> rs( "拉丁文名 ") then '这个很有趣 因为excel是别人设计的 备注字段单独为一列 '结构如下 '1 a b c d /表头 '2 a1 b1 c1 d1 /一个植物的数据 '3 aaaaaaaaaaaaaaaa/还是上一个植物的数据 备注字段 实际上是excle中的两行或者多行对应access中的一列 '所以我们必须判断一下 如果 rs( "a ") <> rs( "b ")就说明在access中可以插入了 rs.addnew rs( "中文名 ")=rs1( "chinese ") rs( "拉丁名 ")=rs1( "lading ") rs( "中文科名 ")=rs1( "classification ") rs( "中文名 ")=rs1( "description ") rs.update rs.movenext if err then err clear '这里可能会出现写入错误 因为所有植物的拉丁名都是唯一的 所以在设计access库的时候 对应字段是不 '允许重复的 这样有些时候出现运行错误 所有第一行才 设置了on error resume next 同时可以方式写入重复的数据 i=i+1 end if rs1.movenext loop rs.close rs1.close set rs=nothing set rs1=nothing conn.close set conn=nothing response.write i& "个植物写入成功! " %> |
|
|
|
|