首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 
设为首页
加入收藏
联系我们
热门关键字: .net应用  操作系统  Dreamweaver  WinRAR  网络推广
高级搜索
您当前的位置: 主页>ASP专区>ASP教学>ASP页面将数据库中检索数据生成到本地报表的解决方案
ASP页面将数据库中检索数据生成到本地报表的解决方案
来源: 发布时间:2007-12-17 发布人: 浏览: 人次   字体: [ ]  
Web系统的开发过程中,我们经常会碰到一些这样的需求。客户要求将DB检索出的数据导出,并下载到本地的Excel文件中,做成一定样式的报表。这里我想通过一个实际的例子,讲讲我们是如何在ASP中实现这一需求的。 

  

一、下载处理中,CSV文件生成和Excel模板拷贝的实现代码如下:

 1、上图为数据检索页面,检索的数据一览显示。并且在该页面中将检索用的sql文保存在
Session("strEXCELSQL")中。

2、点击Excel export按钮,提交到下面的下载页面。


3、现在页面重新进行数据库检索,生成CSV数据文件。代码如下:
<%
‘变量定义
Dim fso, Fld, delf, tmpf, fmd, today

‘创建文件处理对象
set fso = CreateObject("Scripting.FileSystemObject")
‘对应web服务器csv目录
set Fld = fso.GetFolder(Server.MapPath("csv"))
set delf = Fld.Files
‘将web服务器csv目录中当天以前的所有文件删除。
For Each tmpf in delf
 fmd = tmpf.DateLastModified
 today = date()
 if(year(fmd) < year(today)) then
  tmpf.delete
 elseif(month(fmd) < month(today)) then
  tmpf.delete
 elseif(day(fmd) < day(today)) then
  tmpf.delete
 end if
next
‘对应web服务器Excel下载目录
set Fld = fso.GetFolder(Server.MapPath("excel_download\"))
set delf = Fld.Files
‘将web服务器Excel下载目录中当天以前的所有文件删除。
For Each tmpf in delf
 fmd = tmpf.DateLastModified
 today = date()
 if(year(fmd) < year(today)) then
  tmpf.delete
 elseif(month(fmd) < month(today)) then
  tmpf.delete
 elseif(day(fmd) < day(today)) then
  tmpf.delete
 end if
next

‘变量定义
Dim rsPtn, strTitle, PtnNo
Dim rsData
Dim rsData_numRows
Dim csvFilePath, strFileNm
Dim strSelectSQL
Dim tempof, f1, csvfile
Dim csvLine, lngLineCnt
Dim i
Dim nowTime, strH, strM, strS
Dim strDateBuf
Dim strCol
Dim strOwner

‘当前时间的取得
nowTime = Time()
strH = Hour(nowTime)
if(0 <= strH and strH <= 9) then
 strH = "0" & CStr(strH)
end if
strM = Minute(nowTime)
if(0 <= strM and strM <= 9) then
 strM = "0" & CStr(strM)
end if
strS = Second(nowTime)
if(0 <= strS and strS <= 9) then
 strS = "0" & CStr(strS)
end if

‘检索页面设定的SQL文取得
strSelectSQL = Session("strEXCELSQL")
‘数据库访问
Set rsData = Server.CreateObject("ADODB.Recordset")
rsData.ActiveConnection = CONNECT_STRING
rsData.Source = strSelectSQL
rsData.CursorType = 0
rsData.CursorLocation = 2
rsData.LockType = 1
rsData.Open()
rsData_numRows = 0
‘CSV文件名生成‘Excel_ +用户ID+时+分+秒
strFileNm = "Excel_" & Session.SessionID & strH & strM & strS
csvFilePath = Server.MapPath("csv") & "\" & strFileNm & ".csv"
‘文件存在性的判断
If(fso.FileExists(csvFilePath) = false) then
 ‘打开文件
  Set csvfile = fso.OpentextFile(csvFilePath, 2, True)
 lngLineCnt = 0
 ‘循环数据集,将数据写入CSV文件
 Do While rsData.EOF = false
  'Excel 最大行数超过
  If lngLineCnt > 65535 Then Exit Do
  csvLine = ""
  For i = 0 To rsData.Fields.Count-1
   csvLine = csvLine & rsData.Fields.Item(i).Value & ","
  Next
  csvLine = Left(csvLine, len(csvLine)-1)
  csvfile.WriteLine( """*""," & csvLine )
  lngLineCnt = lngLineCnt + 1
  rsData.MoveNext
 Loop
End if
‘Excel模板文件生成
dim f2
set f2 = fso.getfile(Server.MapPath("templates\template1.xls"))
if(fso.FileExists(Server.MapPath("excel_download") & "\" & strFileNm & ".xls") = false) then
 ‘文件从web服务器的templates目录拷贝到excel_download目录
 ‘文件名与CSV文件名相同。
 f2.copy(Server.MapPath("excel_download") & "\" & strFileNm & ".xls")
end if

rsData.Close()
Set rsData = Nothing
%>


共2页: 上一页 1
[2] 下一页
相 关 文 章   发布商链接
·asp实现文件转移、压缩并直接存进数...
·ASP 实现压缩与解压代码
·ASP上传图片到数据库的代码
·VBS脚本调用系统的关机对话框代码
·asp中文数字验证码实现的代码
·ASP版+Ajax实现验证码通用模块
·asp动态生成RSS完整版代码
·ASP脚本基础
·Asp实现人民币大小写转换代码
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·asp动态生成RSS完整版代码
·ASP版+Ajax实现验证码通用模...
·asp中文数字验证码实现的代码
·VBS脚本调用系统的关机对话框
·ASP上传图片到数据库的代码
·ASP 实现压缩与解压代码
·asp实现文件转移、压缩并直接
·Asp实现人民币大小写转换代码
热 门 文 章
·ASP版+Ajax实现验证码通用模...
·VBS脚本调用系统的关机对话框...
·asp中文数字验证码实现的代码
·Asp实现人民币大小写转换代码
·ASP上传图片到数据库的代码
·asp动态生成RSS完整版代码
·asp实现文件转移、压缩并直接...
·ASP脚本基础
·ASP 实现压缩与解压代码
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .