在asp中导入excel表中多条数据,但需避免重复数据(200分感谢)

kokuka 2010-02-21 11:56:43
小弟想实现在asp中提交excel表,将其中数据多条批量导入access数据库(如果难实现也可以换sql的数据库,最好access),为了保证数据的唯一性,要求如果access数控库已经存在的数据不能导入,最好能在asp中反馈回不导入数据的信息,如何实现,请高手详细些解答,非常感谢,分不够,小弟可以多加

例子:
服务器access中原有表xuesheng 的数据

id 学号 姓名 导入时间
1 20090101 王小丫 2009-7-1
2 20090102 李小宁 2009-7-1
3 20090103 赵小祥 2009-7-1
4 20090105 萨小贝 2009-7-1


excel数据

id 学号 姓名

1 20090101 王小丫
2 20090102 李小宁
3 20090104 董小卿
4 20090106 刘小谦
5 20090107 沈小阳
6 20090108 葛小优


实现 excel通过asp提交,把该6条数据中的3,4,5,6导入到access数据库xuesheng表中,第1,2条数据因重复不予导入,并把未导入的1,2条数据 以网页形式反馈给提交信息的用户。

谢谢
小弟在这个版级别较低,只能发100,如能解决,小弟另贴帖子补分感谢




excel表 有
...全文
546 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzx99 2010-02-22
  • 打赏
  • 举报
回复
收藏了先,对我有用。
yan11cn 2010-02-22
  • 打赏
  • 举报
回复
引用 6 楼 kokuka 的回复:
谢谢几位大侠指点,小弟水平有限,能详细些最好,我这就试验一下,还有一个问题,对了能实现在asp中反馈回不导入数据的信息吗?

看来楼主真的该先学学asp了 基础啊。。。
这个只需要在我3楼的基础上改一句就行:
If dbrs.eof Then
dbrs.addnew
dbrs("学号")=rs("学号")
dbrs("姓名")=rs("姓名")
dbrs("导入时间")=Date
dbrs.update
dbrs.close
Else
response.write rs("学号") & " " & rs("姓名") & "已存在<br />"

End If
lihui15 2010-02-22
  • 打赏
  • 举报
回复
create function f_User(@userID varchar(100),@User varchar(100))--判断用户是否存在,如果不存在返回0,否则返回ID
RETURNS int
as
begin
declare @R_User int
select @R_User=id from user_1 where id=@userID and 用户名=@User --判断ID和用户名在数据库中是否存在
if @R_User is null
begin
set @R_User=0 --如果不存在,则返回0
end
else
begin
set @R_User=@userID --否则返回ID
end
RETURN @R_User
end

--select dbo.f_User(20,'张三')as a --可以用这个命令测试一下返回值
本地sql2000测试通过
USER数据:
ID 用户名 分数
1 张三 100
2 李四 50
3 李张 20
select dbo.f_User(1,'张三')as a 返回结果
a
1
select dbo.f_User(10,'张三')as a 返回结果
a
0
zhchaoping 2010-02-22
  • 打赏
  • 举报
回复
三楼大哥,写的好。
按他的写就可以出来了。不重复就把两个数据表中的学号进行匹配就可以了。
yan11cn 2010-02-21
  • 打赏
  • 举报
回复
我写了个 楼主可以参考下 没测试过:
思路比较简单 就是excel的读取 然后挨个查询数据库,数据库不包含的数据才进行插入操作 否则忽略

<%
'下面的[sheet1$],book.xls,abc.mdb根据实际改
set conn=server.createobject("adodb.connection")
connstr="driver={microsoft excel driver (*.xls)};dbq="& server.mappath("book.xls")
conn.open connstr
set conn2=server.createobject("adodb.connection")
connstr2="driver={Microsoft Access Driver (*.mdb)};dbq="& server.mappath("abc.mdb")
conn2.open connstr2
Set rs=Server.CreateObject("ADODB.Recordset")
sql="Select * From [sheet1$]"
rs.Open sql,conn,1,1
Set dbrs=Server.CreateObject("ADODB.Recordset")

Do While Not rs.eof
sql="select * from xuesheng where [学号]=" & rs("学号")
dbrs.Open sql,conn2,1,3
If dbrs.eof Then
dbrs.addnew
dbrs("学号")=rs("学号")
dbrs("姓名")=rs("姓名")
dbrs("导入时间")=Date
dbrs.update
dbrs.close
End If
rs.MoveNext
Loop
rs.close
%>
xiaoguan_Java 2010-02-21
  • 打赏
  • 举报
回复
先把这个顶起来啊回复内容太短了!
_老吴 2010-02-21
  • 打赏
  • 举报
回复
如果是这样的话,你只有在写入的时候判断,excel不是access不能直接insert,是要写进去的,具体可参见我的博客
kokuka 2010-02-21
  • 打赏
  • 举报
回复
谢谢几位大侠指点,小弟水平有限,能详细些最好,我这就试验一下,还有一个问题,对了能实现在asp中反馈回不导入数据的信息吗?
lihui15 2010-02-21
  • 打赏
  • 举报
回复
大慨写了一下,链接XLS2003能读取数据,插入到SQL中
用的是存储过程,代码发上来,没写完,楼主看一下应该会!
随便写上注释!
dim xlsFile
dim strConn
xlsFile="user.xls" 'XLS文件名称
set conn=server.createobject("adodb.connection")
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&server.MapPath(xlsFile)&";Extended Properties=""Excel 8.0;HDR=NO;IMEX=1;"""
conn.Open strConn
set rs=server.CreateObject("ADODB.Recordset")
rs.open "select * from [sheet1$]",conn,1,3
do while not rs.eof and not rs.bof
response.Write rs(0) '测试能读出来
'***************************************
'可以在此处添加插入SQL或者ACCESS的代码就行了,我把存储过程发上来
'****************************************
rs.movenext
loop

'*********************************************************
'存储过程
create proc P_User
@UserId varchar(100),
@User varchar(100)
as
begin
if dbo.f_User(@UserId,@User)=0
begin
insert into user(id,用户名)values(@UserId,@User) '表名字用错了,郁闷,不改了!
end
end

'*****************************f_User函数
create function f_User(@userID varchar(100),@User varchar(100))--判断用户是否存在,如果存在返回0
RETURNS int
as
begin
declare @R_User int
select @R_User=id from user_1 where id=@userID and 用户名=@User --判断ID和用户名在数据库中是否存在
if @R_User is null
begin
set @R_User=0
end
RETURN @R_User
end


大慨思路就这样!你自己看下!
望能看到更好的思路
lj1234567 2010-02-21
  • 打赏
  • 举报
回复
学习,我也在学习,我现在想实现从EXECL到MSSQL的功能

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧