急救!关于在asp中实现将excel导入sql server的问题

sharfly 2006-05-25 11:36:26
我在asp中,先用file框(名为:xlsfile)选定一个excel文件,然后将excel中的内容导入到SQL数据库中。
程序在本机上运行完全是可以成功导入的,但怎么一放到服务器上,就老是弹出提示“导入文件中没有数据,请重新导入!”。
我的相关代码如下——
m_xlsfile=request("xlsfile")
......
set conn2=CreateObject("ADODB.Connection")
conn2.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Extended properties=Excel 5.0;Data Source='"&m_xlsfile&"'"
sql = "select * from [Sheet1$]"
set rs = conn2.execute(sql)
if rs.eof and rs.bof then
response.Write("<script>alert ('导入文件中没有数据,请重新导入!');history.go(-1)</script>")
else
......

不知我的代码哪里写错了,该如何修改?请高手指点!谢谢!
...全文
299 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
olindzhou 2006-06-28
  • 打赏
  • 举报
回复
可以给你个建议
通过asp结合fileup组件就可以实现excel上传并倒入数据库,并且倒入完数据库后,在服务器端
该excel文件不会存在,我已经实现了这个功能,有什么问题可以联系我
msn: olindzhou@hotmail.com
sharfly 2006-05-25
  • 打赏
  • 举报
回复
难道没人懂吗??这个问题折腾了我很久了,急死了!
crazor 2006-05-25
  • 打赏
  • 举报
回复
就是说在excel模板上写好上传的处理语句什么得,然后给用户下载,当用户填写好后就通过该模板自动传到你得服务器了
crazor 2006-05-25
  • 打赏
  • 举报
回复
VBA可以吧,不过这样的话你就得写Excel模板了;同时你的数据库连接密码也暴露了(考虑建临时帐号用来做这个也行)
sharfly 2006-05-25
  • 打赏
  • 举报
回复
请问哪位大虾知道,有没有办法让非本地用户不需要上传excel文件到服务器上,就能获取到excel文件里的数据,实现导入服务器中的sql server?
crazor 2006-05-25
  • 打赏
  • 举报
回复
Server.MapPath是只在服务器端使用的,你在本机的时候由于你本机就是服务器,所以不会出错。
而你放到服务器上时,则Server.MapPath将只在服务器上找该文件。找不到,自然就错了。
crazor 2006-05-25
  • 打赏
  • 举报
回复
Server.MapPath是按照当前的.asp文件的路径与()内的文件的相对路径来算得一个绝对的路径的;
比如说你当前的文件名为aa.asp,同时excel文件也在aa.asp同一个文件夹下面的话,则就可以写成DBPath = "DBQ=" & Server.MapPath("aa.xls" )了;

刚仔细再读了一遍你的问题,发现你可能根本没上传过文件,你需要先把文件上传到服务器才可以。
jinfeng003 2006-05-25
  • 打赏
  • 举报
回复
还有个大问题,XLS文件必须要上传到服务器上才能导入。
直接从客户端导入是不可能的。

路径当然就是上传到服务器上的文件及其路径
jinfeng003 2006-05-25
  • 打赏
  • 举报
回复
m_xlsfile=request("xlsfile")

"DBQ=" & Server.MapPath("./" & m_xlsfile)

当前路径下的文件m_xlsfile,试试看
sharfly 2006-05-25
  • 打赏
  • 举报
回复
我知道我的代码错误应该是出在连接那里,DBPath = "DBQ=" & Server.MapPath("m_xlsfile" ),其中,m_xlsfile=request("xlsfile")。
这样写,系统说不是一个有效路径,请问应该怎么改呢?急!!
sharfly 2006-05-25
  • 打赏
  • 举报
回复
To crazor():
我认为问题多出在你所说的第1种情况。但是,当我把你代码 DBPath = "DBQ=" & Server.MapPath("aa.xls") 改为我自己的m_xlsfiDBPath = "DBQ=" & Server.MapPath("m_xlsfile" ),仍然出现了我原来的错误。

至于你所说的第2种情况,其解决办法对我来说是不实用的,因为我写的这个web程序是给客户操作的,不可能叫客户每一回导入都这么做。
crazor 2006-05-25
  • 打赏
  • 举报
回复
问题可能有两个:
1是连接,我一般使用的连接为
Driver = "Driver={Microsoft Excel Driver (*.xls)};"
DBPath = "DBQ=" & Server.MapPath("aa.xls" )
Conn.Open driver&dbpath

2如果连接没有问题的话,则是excel中数据格式的问题;
我们知道:excel中如果是同一列中存在几种格式的话,则只有最先出现的那种格式的数据将被读取出来,其他格式的数据将自动转化为null;
统一excel格式采用的方法:
你可以先新建一个excel表并设置该表的所有单元格的格式为文本,然后将原来的excel表中的数据先全部选中拷贝到一个记事本里面,再从记事本中将数据拷贝到新建的excel表中;这样excel中数据的格式就统一了。


28,391

社区成员

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

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