跟小D每日学口语

ASP将ACCESS表中的数据记录导入到EXCEL文件中

首先,我是用SQL语句把数据从ACCESS表中读出,再把数据逐行写入excel表中。
第一步:读数据出来
set rs=server.CreateObject("adodb.recordset")
rs.open "select * from user ",conn,1,1

第二步:写入数据到excel文件中
if not (rs.eof And rs.bof) then 
  dim ttxt,file,filepath,writefile
  ttxt="user.csv"  '为要写入的文件取个文件名,后缀可以是txt,xls,这里我用csv,这种文件打开也是excel表
  Set file = CreateObject("Scripting.FileSystemObject")
  Application.lock
  '写入文件的存放路径,一定要开放这个路径下的读写权限
  filepath=Server.MapPath(ttxt)
  Set Writefile = file.CreateTextFile(filepath,true)
  '在表格中写入第一行,字段描述,这个根据你实际的数据表字段来写
  Writefile.WriteLine "姓名,职位,E-mail,单位名称,联系地址,提交时间" 
  do while not rs.eof
  Writefile.WriteLine rs("姓名")&","&rs("职位")&","&rs("E-mail")&","&rs("单位名称")&","&rs("联系地址")&","&rs("提交时间")
  rs.movenext
  loop
  '以上三行作用是逐行将数据写入表中
  Writefile.close
  Application.unlock
  rs.close
  set rs=nothing
end if
'完成写入

就这两步就可以实现将ACCESS表中的数据导入到EXCEL文件中了,完成以后打开刚才的user.csv文件,里面是不是有数据了?
这里还要提一个注意事项,写入数据的时候,excel默认是以“,”为分隔符,一遇到“,”,它就会自动将数据写到下一个字段项,因此,如果你的数据中出现了半角的逗号(例如:联系方式里面有逗号),那么逗号后面的内容将会写到下一格,这样依此往后推,那么写入的数据就会错位,一片混乱。如果你将留言版的内容写入,就会碰到这样的问题,解决的办法就是用替换函数。
function HTMLEncode(fString)
if not isnull(fString) then
    fString = Replace(fString,",", ",")
    fString = Replace(fString,chr(10), ",")
    fString = Replace(fString,chr(13), " ")
    fString = Replace(fString,"<br>", ",")
    fString = Replace(fString," ", " ")
    HTMLEncode= fString
end if
end function
将这个HTMLEncode(fString)用进去,将rs("联系地址")改成 HTMLEncode(rs("联系地址")),以及所有可能会出现“,”的字段改成HTMLEncode(rs("xxx")),就可以避免数据错位了。
以上是我成功测试过的一个方法,如果还有更好的方法,欢迎留言讨论。
posted @ 2011-01-11 15:44  明仔¥  阅读(690)  评论(0编辑  收藏  举报