
<%
on error resume next
导入excel电子表格数据到sql sever数据库 by dicky 2004-12-27 16:41:12 qq:25941
function open_conn(sqldatabasename,sqlpassword,sqlusername,sqllocalname,sqlconn)
创建数据库连接对象并打开数据库连接
dim connstr
sql server数据库连接参数:数据库名、用户密码、用户名、连接名(本地用local,外地用ip)
connstr = "provider=sqloledb; user id=" & sqlusername & "; password=" & sqlpassword & "; initial catalog = " & sqldatabasename & "; data source=" & sqllocalname & ";"
set sqlconn = server.createobject("adodb.connection")
sqlconn.open connstr
if err then
err.clear
set sqlconn = nothing
response.write "数据连接错误!"
response.end
end if
end function
function close_conn(sqlconn)
关闭数据库连接并清除数据库连接对象
if isobject(sqlconn) then
sqlconn.close
set sqlconn = nothing
end if
end function
call open_conn("shat_edg","","sa","(local)",sqlconn) 打开sql server数据库连接
function get_emp_cnname(ntaccnt)
根据用户nt帐号得到用户中文名
dim sql,rs
sql = "select emp_cname from rf_employee where emp_ntaccnt="&ntaccnt&""
set rs = server.createobject("adodb.recordset")
rs.open sql,sqlconn,1,1
if rs.eof then
get_emp_cnname = ""
else
get_emp_cnname = rs("emp_cname")
end if
rs.close
set rs = nothing
end function %>
导入excel电子表格数据到sql sever数据库
导入excel电子表格数据到sql sever数据库
?出?程中?不要刷新?面!
<%
if right(trim(request("file")),3) = "xls" then
response.write "您所?出的excel文档是:"&trim(request("file"))&" "
end if
=====================asp读取excel注事项=====================================
i)将excel97或excel2000生成的xls文档(book)看成一个数据库,其中的每一个工作表(sheet)看成数据库表
ii)ado假设excel中的第一行为字段名.所以您定义的范围中必须要包括第一行的内容
iii)excel中的行标题(即字段名)不能够包含数字. excel的驱动在碰到这种问题时就会出错的。例如您的行标题名为“f1”
iiii)假如您的excel电子表格中某一列同时包含了文本和数字的话,那么excel的odbc驱动将不能够正常, 处理这一行的数据类型,您必须要确保该列的数据类型一致
e-mail:kaxue@hotmail.com qq:484110 homepage:www.flyday.net
整理时间:thursday, may 23, 2002 5:54 pm win2000server+iis5 测式通过
============================================================================
if trim(request("file")) = "" then
response.write "?不起,???需要?出的excel文档!"
response.end
elseif right(trim(request("file")),3) <> "xls" then
response.write "?不起,??定您要?出的是excel文档!"
response.end
else
列出所??的excel文档中的任何工作表
dim execlfile,objexcelapp,objexcelbook
execlfile = trim(request("file"))
set objexcelapp = createobject("excel.application")
objexcelapp.quit
objexcelapp.displayalerts = false 不显示警告
objexcelapp.application.visible = false 不显示界面
objexcelapp.workbooks.open(execlfile)
set objexcelbook = objexcelapp.activeworkbook
redim arrsheets(objexcelbook.sheets.count)
for i=1 to objexcelbook.sheets.count
arrsheets(i) = objexcelbook.sheets(i).name
response.write arrsheets(i)
next
objexcelapp.quit
set objexeclapp = nothing
列出所??的excel文档中的任何工作表
end if
dim conn,driver,dbpath,rs,sqlinsert,sqldelete
建立connection对象
set conn = server.createobject("adodb.connection")
driver = "driver={microsoft excel driver (*.xls)};"
dbpath = "dbq=" & server.mappath( "hrb.xls" )
dbpath = "dbq=" & trim(request("file"))
调用open 方法打开数据库
conn.open driver & dbpath
dsn连接方式
conn.open "dsn=test"
注意 表名一定要以下边这种格式 "[表名$]" 书写
for i = 1 to ubound(arrsheets)?始循?任何工作表
sql = "select * from ["& arrsheets(i) &"$] "
set rs = conn.execute(sql)
if rs.eof and rs.bof then
response.write "没有找到您需要的数据!! "
else
response.write "工作表:"&arrsheets(i)&" "
do while not rs.eof
sqlinsert = "insert into "&trim(request("table"))&" (edg_project_name,edg_project_no,edg_project_vm,edg_project_vm_cnname,edg_project_m,edg_project_m_cnname,edg_project_director,edg_project_director_cnname) values ("&trim(rs(0))&","&trim(rs(1))&","&trim(rs(2))&","&trim(rs(2))&"("&get_emp_cnname(trim(rs(2)))&")"&","&trim(rs(3))&","&trim(rs(3))&"("&get_emp_cnname(trim(rs(3)))&")"&","&trim(rs(4))&","&trim(rs(4))&"("&get_emp_cnname(trim(rs(4)))&")"&")"
此处插入的值根据实际数据库结构进行调整
sqlconn.execute(sqlinsert)插入excel表格?任何??
rs.movenext
loop
response.write "恭喜,成功?出excel文档中工作表["&arrsheets(i)&"]的??到sql server??表["&trim(request("table"))&"]中!^_^ "
end if
rs.close
set rs = nothing
next循?任何工作表?束
call close_conn(conn) 关闭excel数据库连接
call close_conn(sqlconn) 关闭sql server数据库连接 %>
|