首页学院源码字体下载软件电脑书| 素材图片模版壁纸酷站图标笔刷纹理|小游戏博客QQ表情投票计数器JoyRssMail
动态网站制作指南
首页|网络编程|站长之家|网页制作|图形图象|操作系统|冲浪宝典|软件教学|网络办公|手机学院|邮件系统|网络安全|认证考试
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP实例
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket

asp生成excel报表


发表日期:2008-10-24 |


1. 前言
报表打印通常是管理信息系统中的一个重要模块,而Excel凭借它功能强大、应用灵活、通用性强等的优势在报表打印中获得了广泛的应用。
最初的管理信息系统基本上是采用客户机/服务器(C/S)模式开发的,但随着WWW的广泛应用,目前的管理信息系统已经逐渐开始从C/S模式向浏览器/服务器(B/S)模式转变。B/S模式具有传统C/S模式所不及的很多特点,如更加开放、与软硬件无关、应用扩充和系统维护升级方便等等,目前已成为企业网上首选的计算模式,原先在C/S下的很多软件都开始移植到B/S模式下。由于B/S模式的特殊性,在C/S下相对较易实现的Excel报表打印功能在B/S下却成为一个难点。本文根据在实际的项目中总结的经验,以ASP为例,给出了一个较好的通用方法。
2. 功能实现
为了说明问题,这里举一个例子。系统平台是Windows 2000+SQL Server 2000+IIS 5.0+ASP 3,报表采用的是Excel,要求按照给定的报表格式生成图书销售统计的报表,并能够打印。
2.1 Excel报表模板的制作
首先根据给定的报表格式,制作一个Excel模板(就是要打印的报表的表格),当然其中需要从数据库中动态统计生成的数据留着空白。这个报表先在Excel中画好,然后保存为模板,存放在起来,这里为\test\book1.xlt。
2.2 Excel报表的生成与打印
这里采用了Excel的Application组件,该组件在安装Excel时安装到系统中。我们的操作也都是针对该组件。
(1) 建立Excel.Application对象
set objExcel=CreateObject("Excel.Application")
(2) 打开Excel模板
objExcel.Workbooks.Open(server.mappath("\test")&"\book1.xlt") '打开Excel模板
objExcel.Sheets(1).select '选中工作页
set sheetActive=objExcel.ActiveWorkbook.ActiveSheet 
(3) Excel的常规添加操作
例如sheetActive.range("g4").value=date() ‘这里添加的是时间,当然也可以是你指定的任何数据
(4) Excel中添加数据库中的纪录
这里假设已有一个数据集adoRset,存放由Sql操作生成的统计数据。
num=7 ‘从Excel的第七行开始
do until adoRset.EOF ‘循环直至数据集中的数据写完
strRange="d"&num&":f"&num ‘设定要填写内容的单元区域
sheetActive.range(strRange).font.size=10 ‘设定字体大小
sheetActive.range(strRange).WrapText=false ‘设定文字回卷
sheetActive.range(strRange).ShrinkToFit=true ‘设定是否自动适应表格单元大小
sheetActive.range(strRange).value=array(adoRset("bookid"),adoRset("bookname"),adoRset("author")) ‘把数据集中的数据填写到相应的单元中
num=num+1
adoRset.MoveNext
loop
(5) Excel临时报表文件的保存及处理
实际运行中应该注意每次一个用户进行报表打印时都采用一个临时的Excel文件,而不是硬性规定文件名,因为如果用固定的文件名的话,只有第一次生成是成功的,后面的操作都会因为已存在同名文件而导致失败。所以我们需要每次都产生一个临时的而且不重复的文件名,这里可以采用自定义的getTemporaryFile()函数由来生成,然后存放在变量filename中,用变量filepos表示这些临时文件的路径。
此外如果这些临时文件不处理的话久而久之会成为文件垃圾,因此在每个用户提交Excel报表打印请求时要先删除临时目录下所有原先产生的临时打印文件。
临时文件的处理主要代码如下:
function getTemporaryFile(myFileSystem) 
dim tempFile,dotPos
tempFile=myFileSystem.getTempName
dotPos=instr(1,tempFile,".")
getTemporaryFile=mid(tempFile,1,dotPos)&"xls"
end function 
set myFs=createObject("scripting.FileSystemObject")
filePos=server.mappath("\test") & "\tmp\" '要存放打印临时文件的临时目录
fileName=getTemporaryFile(myFs) '取得一个临时文件名
myFs.DeleteFile filePos&"*.xls" '删除该目录下所有原先产生的临时打印文件
set myFs=nothing
Excel临时文件的保存代码为:
objExcel.ActiveWorkbook.saveas filePos&filename 
(6) 退出Excel应用
objExcel.quit
set objExcel=Nothing
(7) Excel报表的打印
前面的步骤已经生成了Excel报表,下一步进行打印,采用的策略可以有两种:
方案一:提供上面生成的Excel报表临时文件链接给用户,用户可以直接点击在浏览器中打开Excel报表并通过浏览器的打印功能进行打印,也可以点击右键然后另存到本地后再作打印等相关处理。
方案二:生成Excel报表后直接在客户端加载到浏览器,当然在没有完全加载时应该提示“正在加载,请等待”等字样。
2.3 系统配置与注意事项
虽然以上代码很简单,但实际应用不当经常会出现错误,所以下面要讲到的系统配置和注意事项非常关键。
(1) 千万要保证以上代码输入的正确性,否则一旦运行错误,Excel对象会滞留内存,难以消除,导致下一次调用时速度狂慢,并产生内存不可读写的Windows错误。这时的解决方法就是注销当前用户,如果还不行,就只能Reset了。
(2) 一定要设置好负责打印功能的asp文件的权限。方法是:在IIS管理中,选择该asp文件,右键然后选“属性”/“文件安全性”/"匿名访问和验证控制“,在这里IIS默认是匿名访问,应该选择验证访问(这里基本验证和集成Windows验证两种方式均可,但前者不够安全),这一点无比重要,否则应用当中会出错的。
(3) 有的时候报表分为多页,而且我们希望每一页有相同的表头,要求表头每页都自动打印,可以在Excel模板中进行设置。方法如下:选择菜单"文件"/"页面设置"/"工作表",然后在"顶端标题行"输入你表头的行数(如:表头为1-3行即填入:$1:$3)。
 
3.总结
以上我们给出了一个采用ASP写的在B/S模式下实现EXCEL报表的生成与打印的例子,在实际当中已经得到了良好的应用。事实也证明,这个例子的代码虽然不难写,但一定要注意系统的配置,这也是无数次失败后得出的经验。

关注此文的读者还看过:
·bbs的数据结构和存储过程(二)
·多图片上传到指定的目录并存到数据库
·实现有管理功能的ASP留言板
·在一个ASP页面停留的多少时间的程序
·趣味访客计数器设计两则
·文件的读出 编辑 管理
·一个ASP.NET+XML留言本例子
·用asp实现QQ在线查询
·用ASP做的DNS LOOKUP程序
·ASP常用函数自动获取匹配文章标签(Tags)、关键字:ShowTags()

浏览全部asp的内容 PS笔刷下载 39种不同语言在线翻译
文章搜索服务





邮件订阅服务
输入你的邮件地址,你将不会错过任何关于<ASP实例>的内容
Powered by JoyRssMail

网络编程文章分类

本月文章推荐
. 下拉菜单输入,根据输入内容自动定位.
. 简单的文件目录浏览源程序.
. FrontPage 2000+DB2实现数据库信息.
. 磁盘ID在ASP源码防拷贝中的应用.
. 用户注册及跟踪代码(二).
. 深入研究“用ASP上载文件”(二)&nb.
. 下拉框连动的小例子(数据库版).
. 一个简单的网上书城的例子(四).
. 嵌入式Web视频点播系统实现方法.
. ASP日历 实现遍历数据库取出对应的.
. 用ASP.NET构建完整E-mail发送系统&.
. 一个防止外部数据提交的脚本.
. 轻松实现将上传图片到数据库.
. 用EasyMailObject组件处理Exchange.
. 搜索按钮(客户端表单).
. 用数组实现数据记录的批量录入方法.
. 纯Javascript打造的ASP组件|无组件.
. ASP后台快速调用Mysql 数据库.
. 利用ASP.NET设计FTP文件上传(下).
. 一个用c#写的扫描asp源码漏洞的应用.
. 利用ASP实现三个强大功能之三.
. asp自动生成javascript检验函数.
. 完整的访问统计程序(二 程序篇).
. 聊天室建设详解一.
. 超长字符的智能分页-支持HTML .
. 使用 ASP+ 列表绑定控件(中).
. 用ASP实现对MP3曲目信息的操作.
. 在线实时开通WEB及FTP源程序.
. 在ASP中使用Oracle数据库.
. 用ASP开发试题库与在线考试系统(2).
  最新网站源码 最新软件下载
2009-7-3 MyBB v1.4.8
2009-7-3 miniBB v2.3
2009-7-3 Modoer多功能点评系统 v1.1.0 Bu
2009-7-3 Modoer多功能点评系统 v1.1.0 Bu
2009-7-3 Zoomla!逐浪CMS v3.2
2009-7-3 谷搜Linux邮件群发系统 v1.1
2009-7-3 nicEdit Version 编辑器 v0.9 r23
2009-7-3 捷扬文章系统 v0.7.3
2009-7-3 ITF4博客程序(24个风格)
2009-4-4 SharePoint Designer 2007
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
  发表评论
姓 名: 验证码: [ 查看评论 ]
内 容:
 
站长工具:Google PR查询|网站速度测试|CSS在线编辑器|OPEN参数生成器|弹出式窗口代码产生器|密码登录生成器|在线按钮生成器|Meta标签生成器|邮箱图标在线生成|多色彩特效字代码生成器|网页代码调试器|在线FTP登陆|Flash取色器|配色代码对照表|配色辞典|CSS生成器|CSS在线压缩|广告代码|框架网页代码生成器|js/vbs加密|md5加密|进制转换|UTF-8 转换工具|在线调色板|Html转换js|Html转换asp|Html转换php|Html转换perl
实用工具:汉字翻译拼音|拼音字典|在线翻译|火星文|在线网速测试|符号对照表|个税计算|公积金贷款计算|购房银行按揭利率计算|实时汇率查询换算|经典小工具|汉字简繁转换|普通单位换算|公制单位换算|生辰老黄历|国内电话区号|国家代码与域名缩写|文字加密解密|元素周期表|健康查询|世界时间|全国各地车牌查询|全国车辆交通违章查询|万年历|二十四节气|汉字横竖排版|手机号码查询|计算器|ip搜索
广告刊登 | 版权声明 | 联系我们 | 加入收藏 | RSS订阅
Copyright © 2000-2009 www.knowsky.com All rights reserved | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 コーチ ホームページ作成
過払い請求 現金化 債務整理 現金化