« XML 确认wsImage组件使用方法 »

使用adodb对象可以访问和操作excel文件 asp

在asp中,使用adodb对象可以访问和操作excel文件。下面我们以一个excel文件导入access为例子,简要看看在asp中使用excel的方法。

1、一个.xls文件可以看成一个数据库,其中的每一个工作表(sheet)看成数据库表。
2、access虽然只是一个桌面数据库,但是它有关系型数据库的验证结构,excel则不然。Ado以excel中表格第一列的数据(行标题)为字段名。
3、字段名不能够包含数字. Excel的驱动在遇到这种问题时就会出错的。
4、如果你的Excel电子表格中某一列同时包含了文本和数字的话,那么Excel的ODBC驱动将不能够正常, 处理这一行的数据类型,你必须要保证该列的数据类型一致。<--以上是从经典论坛找到的说明-->
如下图 我们看看一个excle表格常见的格式。


这里,姓名、性别对应于access中的字段名。但是在第三列中,第一行和第二行的数据是同一个字段。这个在access中是不会出现的,所以使用office中的工具导入,有些时候不一定可以满足我们的要求,但是利用简单的asp脚本,就可以灵活的导入我们的数据。现在,看看下面的源码,来分析一下excel的调用方法。


<%
'code by niceidea
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链接

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

sql="select * from [Sheet1$]"
'xls中只有一个表格 这个是打开该表格的方法 这个是本文的唯一重点
set rs=conn.execute(sql)
'取得记录集对象


dim i
i=0
'我使用的excel文件中存放的是一些植物信息 都是别人收集的
'数据结构和上图中类似 下面的记录集操作方法和一般的没有什么区别了
'下面打开access的记录集以便写入 由于要求判断 而且是一次性执行的文件 用update取代insert 不考虑效率先
sql0="select * from xwplant"
set rs0=server.createobject("adodb.recordset")
rs0.open sql0,conn0,3,3
'由于要写入数据 我们用乐观方式打开


do while not rs.eof
if rs("中文名")<>rs("拉丁名") then
'这里判断一下数据是不是多行公用一列
rs0.addnew
rs0("chinese")=rs("中文名")
rs0("lading")=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&"个植物写入成功!"
%>

最后我是一次性写入了几百条植物 省得一个一个填表单。

一年前我自己写的一个文件,现在从硬盘中既然翻出来,就发布到这里吧,好歹也是一个原创。

原创文章如转载,请注明:转载自悠悠博客 [ http://www.ajaxstu.com/ ]

相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。