admin管理员组

文章数量:1535100

2024年5月22日发(作者:)

~ 

熊紫瑾1,2 

XiongZijin 

(1.华东交通大学,江西南昌330013;2.江西交通职业技术学院,江西南昌330013) 

(1.East China Jiaotong University,Jiangxi Nanchang 330013;2.Jiangxi V&T College ofCommunication, 

Jiangxi Nanchang 330013) 

摘要:本文就B/S模式下,对ASP网络应用程序中数据导出至EXCEL生成报表的方法进行了探讨与 

实践,解决了ASP编写网络应用程序对有关数据输出至EXCEL生成报表的问题。参照本方法可以很容易 

按需运用。 

关键词:ASP;ADO;数据导出;EXCEL报表 

中图分类号:TP31 l 文献标识码:A 文章编号:1671.4792.(2O LO)11.0016.03 

Abstract:Based OFt B/S mode,the ASP web applications data output to EXCEL generate reports explores 

methods and practice.solved the ASP write network applications to relevant data output to EXCEL generate re— 

ports ofproblems.Refer to the method call easily on—demand use. 

Keywords:ASP;ADO;Data output;EXCEL Statements 

0引言 

入到EXCEL指定位置的单元格中,例如打印详细 

随着我国互联网技术的飞速发展,常规应用程 的单个学生成绩单、教师任课表等。 

序逐渐由单机模式转向浏览器/服务器(Brows— 

本文就针对这两种方式,提出编程实现的方法, 

er/Server)模式,B/s模式具有以往C/S模式所不及 

并给出关键源程序。 

的很多特点,它应用更开放、基本与客户端软硬件无 

1 ASP和ADO相关技术 

关、应用扩充和系统维护升级都很方便等等,已成为 

ASP(Active Server Page)即动态服务器页面,是 

网络应用软件首选的开发模式。其中ASP+SQL技 

套由微软公司开发的服务器端脚本编写环境,使 

术仍为当前开发B/S模式网络应用程序的常用方 

用ASP可以组合HTML网页、脚本命令和ActiveX 

法。但是,在ASP网络应用程序开发中常常会遇到 

控件建立动态、交互、高效的Web服务网络应用程 

根据用户的要求需要将数据打印出来,而通常匝自 

序。ADO(ActiveX Data Objects)是微软公司较早开 

带的打印功能一般不能满足该需求。据于此,本文 

发的数据访问技术,是一个用于存取数据源的COM 

探讨并实践了ASP网络应用程序中将数据导出至 

组件,它提供了编程语言和统一数据访问方式,与 

EXCEL报表中,方便用户编辑与打印。按照应用需 

OLE DB一起协同工作,以提供通用数据访问,是一 

求,ASP网络应用程序实现该功能通常有两种情 

种功能强大的数据访问编程模式,是对当前微软所 

况: 

支持的数据库进行操作的最有效和最简单直接的方 

(1)导出至无模板的EXCEL中,即数据库中的 

法。ASP结合ADO技术可以实现对大部分常见数 

记录逐条导出至EXCEL中。 

据库的存取操作,从而使得大部分数据源可编程的 

(2)导出至排好格式的EXCEL中,即把数据插 

属性得以直接扩展到ASP网络应用程序中。 

ASP网页文件存放在11S(Intemet Information— 

Set rs=eonn.execute(sq::) 

dim trLine,responsestr 

∽ 

Server)n ̄务器的根目录下,当客户端浏览器请求调 

用ASP文件时,服务器会读取该文件,并解释执行 

Script程序。如果在Script中使用了ADO对象,服 

务器则根据ADO对象的参数来启动相应的数据库 

驱动程序,或者直接利用ADO对象,或者通过A— 

DO对象发送SQL指令,进行数据库存取的操作, 

最后,把脚本执行结果连同ASP文件中的HTM标 

strLine=…’ 

For each X in rs.ifelds 

_D 

网 

络 

strLine:strLine&x.name&cb.r(9) 

Next 

用 应 

程 

序 

数 myfile.writeline strLine 

‘把查询出来的记录逐行写入EXCEL 

Do while Not rs.EOF 

导 据 

出 

识一起合并成一个完整的HTML文件传送到客户 

浏览器。 

2无模板数据导出至EXCEL 

把查询出来的SQL数据库表中的记录集插入 

到EXCEL中,即通常所说的把SQL表记录转换成 

EXCEL表,方便编辑和打印。 

这种情况实现起来比较简单,不要求进行过多 

复杂的操作,实现时常采用的步聚为:①连接数据 

库,查询出需要导出的记录集;②根据指定的EX. 

CEL文档的路径和文件名,打开或者新建EXCEL 

文档;③处理标题信息,从数据库中取出所需要的字 

段名分别写入到EXCEL文档第一行;④将查询出 

来的记录分别写入到EXCEL文档的整行单元格 

中。关键参考代码如下: 

<%‘连接数据库 

connstring=”driver={sql server};server=l27.0.0.1 

;database=kc;uid=sa;pwd=saa” 

set COtln server.createobject(”adodb.cormection”) 

conD.Open connstring 

‘查询需要插入的记录 

dim s,sql,iflename,fs,myfile,x 

sql=”select fi'om kcname” 

‘创建文件对象实例,并判断创建的文件是否 

存,如果存在就删除,再创建该EXCEL文档 

Set fs server.CreateObject scriptnig.iflesyste— 

mobject”) 

iflename=Server.MapPath(”导出课程数据. 

xls”) 

if fs.FileExists(iflename)then 

fs.DeleteFile(iflename) 

endif 

set m le=fs.CreateTextFile(iflename,true) 

‘执行查询命令,并把列名写人EXCEL 

至 

strLine=”” × m 

f0r each x in rs.Fields m o 

广 

strLine=strLine&X.value&chr(9) 探 的 

next 讨 

myfile.writeline strLine 与 

实’ 

rs.MoveNext 现 

loop%> 

3数据导出至有模板的EXCEL 

根据给定的报表格式,制作一个EXCEL模板 

(就是要打印的报表的表格),其中需要动态填充蹲J 

络应用程序数据的单元格就留空,保存为网页格式, 

将它存放在ASP程序所指定位置盼子目录中。浏览 

运行ASP相关的打印子程序,自动打开EXCEL模 

板网页文件,根据SQL语句查询出来的数据值插入 

到报表的留空位置中,最后利用EXCEL应用软件 

编辑打印即可。 

这种情况根据不同的应阚安现起来比较复杂, 

匣应用比较灵活。其编程开发实现步聚为:①制作好 

EXCEL模板,修改扩展名为.htm文件,模板如图一 

昕示;②使用ADO技术连接数掂库;③创建EX 

ZEL.APPLICATION对象并判断客户端是否安装有 

XCEL软件;④打开htm模板文档并判断是否允许 

 ̄ctriveX控件运行;⑤执行查询命令并将值分别写 

人到EXCEL文档的不同单位元格中。 

在ASP应用程序中创建一个打印子程序,其关 

建参考代码如下: 

<%on error resume next 

Set Obj=createobject(”exce1.application” 

‘创建exce1.application对象并判断是否成功 

iferr.number>0 then 

msgbox”发生错误,请确认您的电脑是否安装 

了,Excel,并且您的浏览器是否允许远行Excel!”,16, 

17 

一n 

霞弱 

②知玉毒j蠹耳^.}箍末掌恁 

教筛学期授谭计嗣表 

图一数据导出的EXCEL空模板 

”提示” 

;,indow close 

end if 

Oli errorgoto 0 

err.Clear 

On elTOF FCgllIlle next 

‘利用对象打开模板文件,并判断是否成功; 

obj Workbooks.open (’Ihttp://127.0.0.1/edit- 

edteacher

_

_

class.him”) 

ferr.number>0 cb f 

msgbox”发生错误 请将难的安全级别降低, 

确保能运行ActriveX。 闭本窗口.重新打印!”,l6, 

”提示” 

window close 

endif 

‘设置当前打 镬板文档为活动 作簿申的活 

动 【作表 

set Obj Sheet=Obj.Activeworkbook.ActiveSheet 

‘执行查询命令 

SQL=”Select from show

editedkcclass’’ 

——

Set Rs=Server.createobject(”adodb.recordset” 

Rs.Open SQL,conn,3,l 

do while not Rs.eof 

%> 

‘把查询出来的值插入到EXCEL指定的单元 

格 

ObjSheet.Range(”H4:O4”)=”<%=Trim(Rs 

(’.xb_name”))%>”’系部值 

ObjSheet.Range(”H5:O5”)=”<%=Trim(Rs 

(”ke_name”))%>”’课程值 

】8 

ObjSheet.Range(”tt6:O6”)=”<%=Trim(RS 

(”banj(一id”))%>”’班级值 

ObjSheet.Range(”I19:R19”)= 

<% Trim(RS 

(t'jiangke~xueshi”))%>” 

ObjSheet。Range(”F20:R20”)= 

<%=Trim(RS 

(”qita”))%>” 

<。/Jo R5.mO ̄eNext 

loop 

Rs.close‘关闭连接 

setRs=nothing 

Msgbox”已经成功导入到Excel中!”,64,”提示”% 

> 

4结束语 

以上是在ASP网络应用程序中对数据导出至 

EXCEL报表的二种方法,没有采用其它复杂的报表 

控件,特别是第二种导出功能,可以根据实际应用排 

成不同的版面再导出打印,应用较广,灵活性较大, 

而且导成EXCEL报表后处理起来比较简单,在实 

际的办公应用中也比较普遍。因此,在B/S模式下, 

利用该方法是处理ASP网络应用程序中数据导出 

打印报表功能的一种较好的解决方案,具有一定的 

实Jfj价值。 

参考文献 

[1]强智科技,http://www.qzdatasofl corn/. 

[2]陈湘平,李光明.ASP应用程序中实现Excel 

报表处理[J].空军雷达学院学报,2008,O1. 

【3]郑烁.ASP操作Excel的技术方案[J]。福建电 

脑,2008,(5)。 

[4]张秀虎.ASP中Access与Excel数据转换技 

巧[J].中国教育信息化,2009,(O2). 

【5]郑文奎,侯秀红.基于ASP的网上练习系统 

【 曾东大学学报,2009,25(2). 

作者简介 

熊紫瑾(1982一),男,江西省丰城市人,本科,助 

教和助工,2010年4月人华东交通大学攻读工程硕 

士,主要研究方向:计算机应用技术。 

本文标签: 数据导出打印技术