ASP导出到Excel

ASP导出到Excel

http://tomieric.wordpress.com/2010/06/24/export_to_excel/

简单导出到excel二则
1.利用IE和html的ContentType。
最简单且可导出6W以内记录。

01'-------------------------------------------
02'showData.asp
03'-------------------------------------------
04<%
05dim html
06html="<table><tr><td>105</td><td>105223</td><td>中国</td><td>北京</td><td>广州</td><td>4.5</td><td>0</td><td>茂名</td><td>树仔</td><td>内园</td><td>电白 </td></tr><tr><td>105</td><td>105223</td><td>中国</td><td>北京</td><td>广州</td><td>4.5</td><td>0</td><td>茂名</td><td>树仔</td><td>内园</td><td>电白 </td></tr><tr><td>105</td><td>105223</td><td>中国</td><td>北京</td><td>广州</td><td>4.5</td><td>0</td><td>茂名</td><td>树仔</td><td>内园</td><td>电白 </td></tr><tr><td>105</td><td>105223</td><td>中国</td><td>北京</td><td>广州</td><td>4.5</td><td>0</td><td>茂名</td><td>树仔</td><td>内园</td><td>电白 </td></tr></table>"
07response.write html
08%>
09<form action="export.asp" method="post">
10<input type="hidden" name="export" value="<%=html%>">
11<input type="button" name="submit" value="导出当前页面表数据">
12</form>
01'-------------------------------
02'export.asp
03'导出最大65,000条记录
04'-------------------------------
05<%
06Response.ContentType="application/vnd.ms-excel"
07Response.AddHeader "content-disposition","attachment;filename=Test.xls"
08Response.Buffer = True
09Response.ExpiresAbsolute = Now() - 1
10Response.Expires = 0
11Response.CacheControl = "no-cache"
12Response.AddHeader "Pragma", "No-Cache"
13dim i
14i=1
15response.Write "<table>"
16while i<=75000
17response.Write "<tr><td>105</td><td>105223</td><td>中国</td><td>北京</td><td>广州</td><td>4.5</td><td>0</td><td>茂名</td><td>树仔</td><td>内园</td><td>电白 </td></tr>"
18i=i+1
19if i=65000 then response.end
20wend
21response.Write "</table>"
22%>

2.利用模版生成excel文件
主目录下有download文件夹,download文件夹有temp.xls模版文件和temp文件夹(临时存放文件)。
需设置服务器端对temp文件夹设置可写权限。
先建立所需模版,利用查询出来的结果集再插入excel表中

1‘————————————–
2‘export.asp
3‘————————————–
4<meta http-equiv=Content-Type content=”text/html; charset=GB2312″>
5<%
6Response.Charset= “GB2312″
7Response.ContentType=”application/vnd.ms-excel”
8response.write request(“export”)
9%>

 

001‘——————————-
002‘模版字段 zd1,zd2,zd3….zdn(估计查询结果字段最多数量)
003‘生成文件需删除每个文件第一行
004‘固定格式,下面的中文标题转换就不需要做了,中文标题作为excel表temp表的字段
005‘——————————-
006Sql = “select * From books”
007Set Rs = Db.CreateRS()
008Rs.Open Sql, Db.Conn, 1, 1
009     Dim i,TabTitle,zdstr   ‘i,表头,输出字段
010   if rs.eof and rs.bof then
011      response.Write “没有数据…”
012   response.End()
013   else
014      for i=0 to rs.fields.count-1
015       ReDim Preserve fileds_Array(i) 
016              TabTitle=TabTitle&”‘”&ChangeToCn(rs.fields(i).name)&”‘,”  ‘交换成中文字段,输出标题
017    zdstr=zdstr&”zd”&cstr(i)&”,”
018    fileds_Array(i)=rs.fields(i).name
019       next
020   end if
021    
022  zdstr=left(zdstr,len(zdstr)-1)                   ‘去掉末尾“,”
023  TabTitle=left(TabTitle,len(TabTitle)-1)     ‘去掉末尾“,”
024‘———————————-删除之前生成的文件—————-
025  dim d1,d2,fso,path,temp
026  set   fso   =   createobject(“scripting.filesystemobject”) 
027  path   =   server.mappath(“download/temp/”)  
028  Set   temp   =   fso.getfolder(path)  
029  for   each   file   in   temp.Files
030  d1=FormatDateTime(ShowDateCreated(server.mappath(“download/temp/”&file.name )),2)
031  d2=FormatDateTime(now(),2)
032   if (d1<d2)  then
033  fso.deleteFile(server.mappath(“download/temp/”&file.name ))   ‘删除前一天生成的文件
034   end if
035  next
036    
037   
038‘——————打开excel———————————
039     
040 Dim Xls_conn,Xls_Connstr,Xls_rs,Xls_Sql,iflag
041        dim NewFileName,NewFileName1,FileName
042    
043        TempSource= Server.MapPath(“download/temp.xls”)
044  NewFileName1=”download/temp/” & Generator(10) & “.xls”
045  TempEnd=Server.MapPath( NewFileName1)
046  Call CopyFiles(TempSource,TempEnd)     ‘复制文件到临时文件夹
047    
048  FileName=”<divdownload”"><span>文件1  <a href=”"download/”&NewFileName1 & “”"><img src=”"images/btndown.gif”" /></a></span></div>”
049    
050  Set Xls_conn=Server.CreateObject(“ADODB.Connection”)   
051  if Xls_conn.state then set Xls_conn=nothing  ‘如果连接已经打开.则先关闭
052  Xls_ConnStr=”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” &Server.MapPath(NewFileName1)& “;Extended Properties=Excel 8.0″ ‘连接字符串
053  Xls_conn.Open Xls_ConnStr
054  Set Xls_rs = Server.CreateObject(“ADODB.Recordset”)
055   
056  Xls_Conn.execute(” insert into [temp$] (“&zdstr&”) values (“&TabTitle&”)”)
057‘—————————————————————–
058        iflag=0
059        while not rs.eof
060         
061      if i=60000 or i=120000 or i=18000 or i=240000 or i=30000 or i=36000 or i=420000 or i=480000 then  ’分文件存放,excel表最多存放65,000条记录
062     ‘——————–’复制文件到临时文件夹——————————— 
063    
064        ‘生成多文件
065  TempSource= Server.MapPath(“download/temp.xls”)
066  NewFileName1=”download/temp/” & Generator(6) & “.xls”
067  TempEnd=Server.MapPath( NewFileName1)
068  Call CopyFiles(TempSource,TempEnd)     ‘复制文件到临时文件夹
069    
070  ’———————————
071      
072  Set Xls_conn=Server.CreateObject(“ADODB.Connection”)   
073  if Xls_conn.state then set Xls_conn=nothing  ‘如果连接已经打开.则先关闭
074  Xls_Connstr=”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” &Server.MapPath(NewFileName1)& “;Extended Properties=Excel 8.0″
075  Xls_conn.Open Xls_Connstr
076  Xls_Conn.execute(” insert into [temp$] (“&zdstr&”) values (“&TabTitle&”)”)
077    
078  FileName=FileName&”<divdownload”"><span>文件”&i&”  <a href=”"download/”&NewFileName1 & “”"><img src=”"images/sjh/btndown.gif”" /></a></span></div>”
079  
080    
081  end if
082            ‘可用select val1,val2 into temp
083     Xls_sql=”insert into [temp$] (“&zdstr&”) values (“
084     For i=0 To ubound(fileds_Array)
085         if CheckFieldsInt(rs.fields(i).name)=1 then
086            Xls_sql=Xls_sql&”‘”&rs(fileds_Array(i))&”‘,”
087      else
088         Xls_sql=Xls_sql&rs(fileds_Array(i))&”,”
089      end if
090     next
091      
092     Xls_sql=left(Xls_sql,len(Xls_sql)-1)&”)”
093     Xls_Conn.execute(Xls_sql)
094           
095      iflag=iflag+1
096      rs.movenext
097  wend
098%>
099<div id=”content”>
100<span>下载地址:</span>
101<%=NewFileName1%></p>
102</div>
103   
104  
105Set Xls_conn=Server.CreateObject(“ADODB.Connection”)
106if Xls_conn.state then set Xls_conn=nothing ‘如果连接已经打开.则先关闭
107Xls_ConnStr=”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” &Server.MapPath(NewFileName1)& “;Extended Properties=Excel 8.0″ ‘连接字符串
108Xls_conn.Open Xls_ConnStr
109Set Xls_rs = Server.CreateObject(“ADODB.Recordset”)
110  
111Xls_Conn.execute(” insert into [temp$] (“&zdstr&”) values (“&TabTitle&”)”)
112‘—————————————————————–
113iflag=0
114while not rs.eof
115  
116if i=60000 or i=120000 or i=18000 or i=240000 or i=30000 or i=36000 or i=420000 or i=480000 then ’分文件存放,excel表最多存放65,000条记录
117‘——————–’复制文件到临时文件夹———————————
118  
119‘生成多文件
120TempSource= Server.MapPath(“download/temp.xls”)
121NewFileName1=”download/temp/” & Generator(6) & “.xls”
122TempEnd=Server.MapPath( NewFileName1)
123Call CopyFiles(TempSource,TempEnd) ‘复制文件到临时文件夹
124  
125‘———————————
126  
127Set Xls_conn=Server.CreateObject(“ADODB.Connection”)
128if Xls_conn.state then set Xls_conn=nothing ‘如果连接已经打开.则先关闭
129Xls_Connstr=”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” &Server.MapPath(NewFileName1)& “;Extended Properties=Excel 8.0″
130Xls_conn.Open Xls_Connstr
131Xls_Conn.execute(” insert into [temp$] (“&zdstr&”) values (“&TabTitle&”)”)
132  
133FileName=FileName&”<divdownload”"><span>文件”&i&”  <a href=”"download/”&NewFileName1 & “”"><img src=”"images/sjh/btndown.gif”" /></a></span></div>”
134  
135end if
136‘可用select val1,val2 into temp
137Xls_sql=”insert into [temp$] (“&zdstr&”) values (“
138For i=0 To ubound(fileds_Array)
139if CheckFieldsInt(rs.fields(i).name)=1 then
140Xls_sql=Xls_sql&”‘”&rs(fileds_Array(i))&”‘,”
141else
142Xls_sql=Xls_sql&rs(fileds_Array(i))&”,”
143end if
144next
145  
146Xls_sql=left(Xls_sql,len(Xls_sql)-1)&”)”
147Xls_Conn.execute(Xls_sql)
148  
149iflag=iflag+1
150rs.movenext
151wend
152%>
153<div id=”content”>
154<span>下载地址:</span>
155<%=NewFileName1%></p>
156</div>

转载于:https://www.cnblogs.com/heartstill/archive/2011/03/09/1978502.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值