用asp将excel数据导入sql server(或Access)中源码

2008-11-18 09:19:17 by 【6yang】, 60 visits, 收藏 | 返回

范例实现需要三个页面:提交表单excel.htm,处理exceltosql.asp。
excel.htm
<%@LANGUAGE="VB" CODEPAGE="936"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml>
<head>
< http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<form action="excelTosql.asp" method="post" name="form1" id="form1">
    <p>
      <input name="bbb" type="file" id="bbb" size="30" />

    </p>
    <p>
      <input type="submit" name="Submit" ="提交" />
</p>
</form>
</body>
</html>
-=====-
exceltosql.asp
<%@LANGUAGE="VBscript" CODEPAGE="936"%>
<%'sql 连接驱动
dim conn,connstr,time1,time2,mdb
time1=timer
'如果是sql 2000数据库,请用下面 连接驱动
connstr = "Driver={SQL Server};server=(local);uid=sa;pwd=123;database=test;"
'如果是Access数据库,请用下面 连接驱动
'connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(mdb/jmgl2007.mdb)
Set conn = Server.Createobject("ADODB.Connection")
conn.Open connstr
If Err Then
err.Clear
Set Conn = Nothing
Response.Write "数据库连接出错,请检查连接字串。"
Response.End
End If
sub closedb()
conn.close
set conn=nothing
end sub

     dim aa
    aa=request.form("bbb")    '获取传递过来的值
    Dim     StrConnect,cc
    Dim     objConn
    Dim     rs
    Dim     Sql
    cc=0
    'Excel连接驱动
 'response.Write(aa)
 'response.end
    aaa="provider=Microsoft.Jet.OLEDB.4.0; Data Source="&aa&";Extended Properties=Excel 8.0"
   ' aaa="provider=Microsoft.Jet.OLEDB.4.0; Data Source='E:!kelinkutowapSQL estbc.xls';Extended Properties=Excel 8.0"
     set StrConnect=CreateObject("ADODB.Connection")
StrConnect.Open aaa

    Set     objConn=CreateObject("ADODB.Connection")

    objConn.Open     StrConnect

    '注意     表名一定要以下边这种格试     "[表名$]"     书写
    Set     rs = Server.CreateObject("ADODB.Recordset")
    Sql="select     *     from     [sheet1$]     "
    rs.Open     Sql,StrConnect,2,2
    IF       rs.Eof     And       Rs.Bof     Then
    response.Write("<script language='javascript'>alert     ('没有资料可以导入!');history.go(-1)</script>")

      else

    Do     While     Not     rs.EOF
    '列出表内信息
      response.write"excel数据为: <br>"
      response.write ""&rs(0)&"-"&rs(1)&"-"&rs(2)&""
response.write"<br>"
'response.End()
    set     rssql=server.CreateObject("adodb.recordset")
    '插入SQL2000里
    rssql.Open     "select     *     from     abc",conn,1,3
    rssql.AddNew
    if     rs(0)<>""     then
    rssql(1)=rs(0)
    end     if
    if     rs(1)<>""     then
    rssql(2)=rs(1)
    end     if
    if     rs(2)<>""     then
    rssql(3)=rs(2)
    end     if

    rssql.Update
    Rs.MoveNext
    Loop
    end     if
    response.Write     "<script language='javascript'>alert('资料导入成功! 共有"&cc&"条数据导入');history.go(-1)</script>"
    %>

将Excel文件(例如book.xls)看成一个数据库,其中的每一个工作表(sheet)看成数据库表。假设Excel中的第一行为字段名,所以你定义的范围中必须要包括第一行的内容,记录集的第一个指针是从Excel表的第二行开始的。所以注意数据的次序性和是否存在。

来自:http://www.9sino.com/web2/9sino2.asp?type=5&class_id=351&id=2908&jingru=888

分享到:
share

    图片原图

    loading

    loading