excel导入sql数据库方法
在网上看到很多朋友在咨询excel导入sql数据库方法,前段时间做项目时客户有这个功能需求,所以今天给大家分享一下实现的方法。先介绍一个思路:将excel文件上传到服务器,然后预览数据,可以对数据进行筛选,点击导入后将选择的数据导入到sql数据库中,最后把上传的文件从服务器上删除,释放空间。好了,接下来我们就按步骤来讲解excel导入sql数据库方法。
1excel文件上传到服务器
我们采用函数的实现,代码如下:
call UploadFile(fName,FilePath)
Function UploadFile(fName,FilePath)
       
    UpLoadFileType= "x l s | "  //设置允许上传的文件类型 
    FileTypeErr=True
    set upload=new upload_file
 for each formName in upload.File
    set file=upload.File(formName)     
 fName=file.FileName
 FileExt=file.FileExt
 
  if file.filesize<100 then 
   Response.Write "<script>" 
   Response.Write "alert('文件地址不能为空');"
   Response.Write "location.href= 'Request.asp';"   
   Response.Write "</script>"
  &d()   
  end if
 
    UpLoadFile_ID=split(UpLoadFileType,"|")
  for i=0 to ubound(UpLoadFile_ID)       
  if UpLoadFile_ID(i)=FileExt then
    FileTypeErr=False
    exit for
  end if     
  next
 
  if FileTypeErr=True then
   Response.Write "<script>" 
   Response.Write "alert('文件类型错误');"
   Response.Write "location.href= 'Request.asp';"   
   Response.Write "</script>"
  &d()
  end if
   
 mapurl=trim(fName) 
 file.SaveToFile Server.mappath(mapurl) //保存文件
 set file=nothing
    next
    set upload=nothing
    FilePath=Server.mappath(mapurl)  //将上传的文件路径赋值给FilePath
End Function
2、预览数据,选择数据导入到sql数据库中
我们采用函数的实现,代码如下:
call ExcelToSql(fName,FilePath)
Function ExcelToSql(ExName,FilePath,Mainbody)   
 Dim conn_xls
 Dim StrConn_xls
 Dim Rs
 Dim Sql
 Dim i 
 
 ExTName = "Sheet1"
 On Error Resume Next 
 Set conn_xls =Server.CreateObject("ADODB.Connection")
 StrConn_xls="Driver={Microsoft Excel Driver (*.xls)};DBQ="& Server.MapPath(""&ExName)
 conn_xls.Open StrConn_xls 
 
 Set rs_xls = Server.CreateObject("ADODB.Recordset")
 Sql="select * from ["&ExTName&"$]" 
 rs_xls.Open Sql,conn_xls ,3,3 
 
 If Err Then 
  err.Clear
  Set conn_xls = Nothing
  set rs_xls=nothing
  Delete_UpLoadFile(FilePath)
 
  Response.Write "<script>" 
  Response.Write "alert('文件格式有误');"
  Response.Write "location.href= 'Request.asp';"   
  Response.Write "</script>"   
  d()
 End If
 
 if f then
  Set conn_xls = Nothing
  set rs_xls=nothing
  Delete_UpLoadFile(FilePath)
   
  Response.Write "<script>" 
  Response.Write "alert('Excel文件中无数据');"
  Response.Write "location.href= 'Request.asp';"   
  Response.Write "</script>"
  d()
 else 
  i=1 
mainbody=mainbody & "<table width=""100%""  border=""0"" cellspacing=""1"" cellpadding=""0"" class=""border"">"
mainbody=mainbody & "<tr class=""title""><td height=""20"" width=""10%"" align=""center""> </td><td height=""20"" width=""30%"" align=""center"">编号
</td><td width=""20%"" align=""center"">姓名</td><td width=""20%"" align=""center"">性别
</td><td width=""20%"" align=""center"">省份</td></tr>"
  do while not f 
 
  '由于excel在处理数据类型时,前面无法带0,补0操作
  if len(Rs_xls(0))<10 then
    cc=""
    aa=10-len(Rs_xls(0))
    for c=1 to aa
    cc=cc & "0"
    next
  end if
  payrollcode=cc & Rs_xls(0)
    '如果导入的excel数据列有变化,请对程序做适当的修改   
mainbody=mainbody & "<tr class=""tdbg"" onMouseOut=""this.className='tdbg'"" onMous
eOver=""this.className='tdbg2'"">"
mainbody=mainbody & "<td height=""20"" align=""center""><input type=""checkbox"" name=""ID"&i&""" value=""ON"" checked></td>"
mainbody=mainbody & "<td align=""center"">"&payrollcode&"<input type=""hidden"" name=""payrollcode"&i&""" value="&payrollcode&"></td>"
mainbody=mainbody & "<td align=""center"">"&Rs_xls(1)&"<input type=""hidden"" name=""cname"&i&""" value="""&trim(Rs_xls(1))&"""></td>"
mainbody=mainbody & "<td align=""center"">"&Rs_xls(2)&"<input type=""hidden"" name=""***"&i&""" value="""&trim(Rs_xls(2))&"""></td>"
mainbody=mainbody & "<td align=""center"">"&Rs_xls(3)&"<input type=""hidden"" name=""shengfen"&i&""" value="""&trim(Rs_xls(3))&"""></td>"
mainbody=mainbody & "</tr>"
 
 i = i +1 
 rs_xls.Movenext
 Loop
 end if 
 rs_xls.close
 set rs_xls=nothing
 conn_xls.close
 set StrConn_xls=nothing
mainbody=mainbody & "<tr class=""tdbg""><td height=""20"" colspan=""10""> 总数:"&i-1&"</td></tr>"
mainbody=mainbody & "</table><p align=""center""><input type=""submit"" name=""B1"" value="" "" class=""Inputbtn""></p>"
mainbody=mainbody & "<input type=""hidden"" name=""i"" value="&i&"><input type=""hidden"" name=""FilePath"" value="&FilePath&">"
End Function
3、删除上传的excel文件
利用FSO组件删除
call Delete_UpLoadFile(FilePath)
Function Delete_UpLoadFile(FilePath)
    Set ateobject("scripting.filesystemobject")
    If Fso.FileExists(FilePath) then
 Fso.DeleteFile FilePath,true     
 End If
End Function
4、完整的excel导入sql数据库方法
if request("Action")="upload" then
call UploadFile(fName,FilePath)
 
call ExcelToSql(fName,FilePath)
 
call Delete_UpLoadFile(FilePath)
 
direct "Request.asp" 
Response.End
end if
需要注意的几个地方:
1、请参照excel连接sql数据库教程example.xls文件的格式进行数据导入,如果excel数据列有增加,可以对程序做适当的修改
2、如果在导入数据时,提示文件格式有误,请检查ExTName指定的名称和excel文件里的sheet名称是否一致;excel文件是否是标准的excel文件格式。
3、确保FilePath在几个函数之间传输时,值不会丢失
4、该程序文件和excel文件在同一目录下,如果不在同一目录,在上传的路径地方做适当的修改
5、确保everyone对该目录有读写权限,这样在上传和删除文件时不会报错
6、在导入中文数据时,可能会出现乱码,中文变问号等情况,可以在读取数据的页面头加入下面的编码:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%Session.CodePage=936%>
好了,上面就是excel导入sql数据库方法,点击下载:excel导入sql数据库源码

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。