首先,我是用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")),就可以避免数据错位了。
以上是我成功测试过的一个方法,如果还有更好的方法,欢迎留言讨论。