admin 管理员组

文章数量: 1086019


2024年4月20日发(作者:企业网站建设策划书范文)

维普资讯

计算机时代2007年第5期 ・47・ 

基于We b的数据打印技术的研究与实现★ 

刘伟’。唐泽龙。 

(1.广东工业大学应用数学学院,广东广州510090;2.广州市盛祺计算机信息技术有限公司) 

摘要:针对Web数据打印缺乏灵活性的问题,使用中间件动态生成的XML,结合XSL如Document对象,提出了几种 

用户可自定义打印格式的通用解决方案。该方案应用于“国有资产智能管理系统”项目取得了良好的效果。 

关键词:中间件;XML;XSL;Document;数据打印;Web 

0引言 

随着数据库技术与网络的发展以及互联网的普及,基于 

B/S(Browser/Server)模式的软件应用越来越广泛。大多数管理 

信息系统在应用中都有数据打印需求,因此对Web数据打印 

的研究非常重要。 

目前常用的Web数据打印的方式有: 

简单应用:将需要打印的数据以表格标志(<table>、 

<tr>、<th>、<td>)组织成HTML文件,以浏览器(如IE)显示并 

打印。其优点为处理与实现简单。缺点是缺乏灵活性,不能由用 

户自定义格式,形式太单调;数据多页显示时,分页打印定位不 

准确。 

模板打印:利用开发工具(如Java)开发一个ActiveX控件, 

安装在需要打印的客户端,用户自定义打印格式并以模板文件 

的形式存储,只需传递相应的数据给对应的模板文件就可以按 

照用户要求打印。这种方式的优点为不需要开发人员修改程 

序,用户可以利用开发人员提供模板修改工具直接修改模板文 

件保存所需的格式。缺点是开发此模板处理工具比较复杂,或 

要向专业公司购买类似的工具。 

本文克服了Web数据打印的不灵活性以及模板处理工具 

复杂性等缺陷,利用中间件技术(EJB、COM)动态生成XML, 

结合不同的XSL文件,得到形式丰富多样的格式,以满足用户 

自定义的需求;又可以通过参数设置选择不同的数据项(数据 

字段)得到不同的打印数据;还可以设置显示页面数据的记录 

数,结合Document对象动态生成HTML文件以确保分页定位 

准确的数据打印。实际应用证明,方案灵活、实现简单,是可行 

的通用方法。 

1中间件技术生成XML数据 

XML(extensible Markup Language)是网络第二代语言,可 

以定义无穷无尽的标志来描述文件中的任何数据元素,突破了 

HTML固定标记集合的约束,使文件的内容更丰富并组成一个 

完整的信息体系。XML具有良好的数据结构,已成为广泛接受 

的数据传输标准。 

Web应用服务器调用中间件(EJB、COM)接口,通过设置 

的参数获得封装的XML数据片段。下面我们在vJ++环境中 

基金项目:广东省科技厅重大攻关项目(A0202039) 

考虑XML数据的生成。 

在vJ++中使用XML接口主要是通过微软提供的 

Msxml2.d11实现。该动态链接库提供了对符合XML标准的所有 

对象进行操作的方法。其中,主要的接口有:DOMDocument26, 

IXMLD0MNOde,IXMLD0MNOdeList,IXMLDOMNamedMap, 

IXMLDOMAtrribute等。 

在国资项目中获取企业信息的XML片段则通过COM对 

象Enpr的接口实现: 

public String getEnprByCondition(int pageNum,int 

pageRecord,String QueryCondition,String SortCondition) 

其中:函数getEnprByCondition以字符串形式返回企业 

xML信息; 

参数pageRecord是分页传递数据时每页显示的记录数; 

参数pageNum是分页传递数据时第pageNum页的数据; 

参数QueryCondition是获取数据设置的过滤条件; 

参数SortCondition是获取数据设置的排序条件。 

2解决方案 

下面给出3种解决方案: 

2.1 XML与XSL相结合生成动态的HTML 

使用此方案,用户在数据打印前可通过预览确认数据是 

否符合要求,并通过数据字段的选择确认打印内容(如图l,图 

2);若页面数据太多等,可重设“页记录数”等参数加以调整 

(如图3,图4);对同一XML片段,若数据排列格式需变化可 

通过选择预定义的XSL文件作为参数调整生成动态的 

HTML( ̄IJ图5),同时也可直接修改XSL文件,从而得到形式 

多样的打印格式。 

操作步骤如下: 

(1)用户通过浏览器(browser)设置参数:XSL文件名,页记 

录数,第几页,查询条件等,然后向Web服务器请求。 

(2)Web服务器响应,获取参数并调用中间件(COM)对象 

接口生成XML片段,同时选择XSL文件,处理数据节点,以 

HTML格式反馈给客户端。 

(3)用户预览确认是否符合需求,若格式不合,继续执行步 

骤(1),否则打印数据。 

维普资讯

48・ Computer Era No.5 2007 

图1打印数据范围选择 

图2选择数据打印结果 

髓圜毯—I—— 

每赛显露

趸显示行数设置 

舒款: 壁 

 

 

一._.一. 一。

 .

 溷 薹

. ~. 立

蓄 

 一。 

 

 

图3页记录数设置 

2.2 XML数据片段导入EXCEL 

在w曲页面中嵌入MSOWC(Microsoft Ofifce Web 

Components)的Spreadsheet Component对象,将XML数据赋 

给此对象,利用Spreadsheet Component对象的“导出到Excel” 

功能即可生成Excel文件(如图6)。 

图5不同XSL显示打印结果 

麴呲p『抽c 托砷扯 酬 e删 蚋 d 螂 蜊i 

誊 

黪 鎏 

羹l革墩娄釉革垃代码 名鞴c 景^ 电话 辘 } 

蠢茸蚀 5153"tS9 ̄ ̄-_Z 南_艇义蓊工作者联台台 禁袁烽 16.30 ̄C0 0 誊 

山直|事业睦 456叶878 1鞭每区{荨} 馆 张 露 88gD啦 1i l誊 

I霞事业性事业蛙 。 棒噜 聃区梢赛愚 。 辩透坤 82 i8 蚺 

滋事娅睦T

曰 T0酾o-4

25娟38啃 南}

辩j

覃区电影麓行靛映中心 

曩区广摇电提愚 郊涪飞 

嵇平嗲 

6335471 ∞ 

63:E'3T8 8 溢冀 

事业睦 T事业眭 

456O瑚

竹59l搏_

-T

藉_

黼瓠暖酶 控剞中心

艇市敢管理局 关礤研 

躲耋毡 

83掰H 

∞322sT 60

∞ 

 

器鬏事 t蛙 o盯∞ 前●鹭阵霄愚 辩l担够蹲TB 88 ; 

鲞 事业l生 6l8s l砒离坶区羽书馆 囊l鸯萍 8艘4 

i耋羹i事业性 侧T蝴-2陌肯区文化馆 卢 828跚 15 

差i事业睫 T2iI98l l 辩海影毓 爨直暑 628搿4 e { 

疗嚣l生 t。0 l 南}卑边髓榆藿站钟粕63229∞- l87 

行致l生∞" 3 南}荨医射技愚蒸荐华83∞】H 53 

嚣聩睦. ToOOO哩辩_艇对外投暴妊济台佑菊叶霹62q368s 36 

行段睦。 052 聃区发糕计划雨 王洁沂 83鸵I29 牡 i 

誊鲑霭l鞋 o 嗡! l 离_由区朔盘联鸯盘 张霹暑 833T s 8 

熏 行酸性

霸鼙啡 ooTos27 z

∞TO谨4 4 

瓣缸

辩龌磐{£局 

耐鞋聪盒台 

麓丹格 

王飞中 8拉聊 

8∞ f 

8 

8 

型行溉l生驺0 "tO-3 聃区公妥局变通暑察犬鼽菇 位 826B4“ 筠l互l一 

图6打印数据导入EXCEL 

部分代码如下: 

<OBJECT classid=”CLSID: 

0002E51 0..0000..0000..C 

codeBase=file:msowc.cab#version=9,0,0,271 0 

height=78 id=m Excel 

style=”HEIGHT:200px:LEFT:0px;TOP:0px; 

WlDTH:500px”width=333> 

<PARAM NAME=。’DataType’’VALUE=’’HTMLDATA’’> 

<param name=ViewableRange value=”¥A¥1:¥T¥22”> 

</OBJECT>//在页面中插入对象 

Exce1.HTMLData=tmpXML;//给对象赋值 

2.3 XML数据与Document对象动态输出HTML文件 

Web应用服务器调用中间件生成XML数据,页面(ASP) 

通过Microsoft.XMLDOM类对象就可以访问XML数据中的 

任何节点内容,并由页面内置对象Document的Write方法动 

态输出HTML文件(如图7)。分页设置通过CSS控制。打印数 

据字段、内容以及页记录数由用户通过参数设置。 

(下转第51页) 

维普资讯

计算机时代2007年第5期 

有很强移植性的应用程序对程序设计和开发人员是一个艰巨 

的任务。笔者结合自己的经历认为可行的思路如下: 

(1)应用的用户界面和实际的处理逻辑尽量分开,将一些 

可以共用的处理逻辑提炼成共用的函数接口。例如:日程应用 

・51・ 

在程序中,所有数据结构的数据项,函数的参数和返回值, 

类的成员数据都用上面的这些通用类型,这样编写的软件的可 

移植性就可以大大提高。 

如果可能,多采用成熟的第三方软件或者知名的开源代码库。 

手机的应用经常碰到部分模块是自己开发还是采用第三 

些模块应该多采用专业公司开发的成熟软件或者采用稳定的 

较少。例如:现在很多手机都支持MP4播放,这样就涉及音视 

强的第三方或者开源的音视频编解码库比自己进行开发要合 

算得多,这样的应用程序的可移植性比自己在特定平台上全部 

由自己开发的应用程序要好。 

的阴阳历转换算法,电话本中的首字母查找算法等都可以放在 

个单独文件或者库文件中,这样的代码可以很方便地移植到 方软件的问题。为了软件的可移植性,加快软件的开发速度,这 

其他的平台上。 

(2)编写代码的时候,数据结构的定义和函数的处理要考 

开源软件。这比自己重新开发好、快捷方便得多,开发成本也比 

虑不同硬件平台的差别。一个好的做法是定义一个平台上通用 

据类型。例如:如果是在c,C++的开发平台上,我们可以定义一 

个文件types,h,它里面包含如下通用类型的定义: 

typedef char BOOLEAN; 

typedef unsigned char BYTE; 

typedef char CHAR; 

typedef unsigned short WCHAR; 

typedef char INT8; 

typedef unsigned char UINT8; 

typedef short INT16; 

typedef unsigned short UINT16; 

typedef long INT32; 

typedef unsigned long UINT32; 

typedef long LONG; 

typedef unsigned long ULONG; 

如果可能,选择一个经过市场验证,可移植性 

的数据类型定义,而不是直接使用设计语言里面原始定义的数 

频编解码的问题,

3结束语 

手机上的应用程序开发环境现在还是一个比较封闭,与应 

用程序耦合比较紧密的系统;应用程序的设计和开发相对复 

杂,对应用的稳定性,安全性,实时性要求也比较高。无论是对 

手机系统平台的设计人员还是开发人员,只有在了解其特点的 

基础上才能提出有针对性的方案。本文指出了这些特点并阐述 

了笔者的观点,希望能起到抛砖引玉的作用。 

参考文献: 

【11程宇,刘福峰.3GSM世界大会钡航未来手机发展http://v, ̄cw eaw. 

com.cn/Article_Show.asp?ArticlelD:7684,2006.3.30.豳 

{上接第48页) 

部分代码如下: 

var xmlDoc=new ActiveXObject(”Microsoft.XMLDOM”): 

//咤{建XMLDOM对象 

xmlDoc.Ioad(XMLData):,/XMLDOM对象装载XML数据 

document.write(”<style media=print>.PageNext 

3方案比较 

(1)XML与XSL相结合生成动态的HTML:该方案一般 

适应于单页数据打印,可以提供丰富多样的格式。 

(2)XML数据片段导入EXCEL:该方案适应于需要调整 

打印数据的情况,通过导出ExceI到文件,用户可对数据进行处 

理,是较灵活的一种方式。 

(page—break—after:always;)</style>”):I1分页标志 

var xmlNodes=xmlDoc.selectNodes(”//Record”)://生成记录节点 

xmlNodes.item(i).seIectSlngIeNode(”Field[@FName= 

’OrganType’】,,).text;//获取第i条记录的字段”OrganType”的值 

document.write(”<br><center>共”+pageCount+”页第” 

+curPage+”页</center><div class=’PageNext’></div>”1 

//分页设置。页尾说明 

(3)XML数据与Document对象动态输出HTML文件:该 

方案适应于数据比较多的连续打印情况。 

4结束语 

本文介绍了在vJ++环境利用中间件(c0M)封装XML数 

据的方法。通过XML,结合XSL,Document等对象提出了三种 

打印方案,并给出相应的实现。比较了三种方案的适用范围。 

“国有资产智能管理系统”的应用效果表明,方案不失为通用的 

静 } 赫l& § 醚 日口 醐2 黼 鬻 垂垂I B虢 萎摊 S燃 糍孵 *; e~ i勰…酆瓣 

单位信息 

单位类刷 

摹 性 

行政性 

行政性 

苻政性 

行政性 

致性 

行政性 

行政性 

行政性 

行政性 

单位代码 名怀 联系人 

721 19814.1 喃搀囊j屠 先 梁直君 

G3a; ̄Y0000.1 南捧边防档壹站 神拱潮 

0卵05238.0 南搀区财政局 蒹标华 

f硎Y0000 2 南梅区对外贸易经济台作局 斗晖 

00705235.6 南搀区发展计划局 王拮沂 

00705275 1 南海区妇女联台舍 张丽麓 

0钾O5276-X 南梅区工弼业联舍会 王飞宁 l

00705244.4 南梅区公安局 J黄丹梅 

K3079670.3 南挎区公费局交通警察太队I高妙t殳 

GJ'W"Y0000.3 南拇区公安捎防太队 I亭肖峰 

电话 

62822 

6322998-41弛l 

6338164 

6293685 

6332429 

6337345 

62242卵 

6339931 

6266444 

6266635 

数据打印方法。 

参考文献: 

【1】侯文彬等.网页设计教程【M】.清华大学出版社,2004. 

【2】孙一中等.XML理论和应用基础【M】.北京邮电大学出版社,2001. 

(31到文远等.用XML发布企业数据(J1.计算机工程与应用,2002.38 

— 

(23):239~242 

【4】D Florescu,D Kossman.Storing and Querying XML Data using 

a RDBMS[J].IEEE Data Engineedng Bulletin,1999.22(3):192~194 

并6页第2页 

图7分页打印数据 

【5】徐彤等.Visual J++编程疑难详解【M】.人民邮电出版社,2000.翻 


本文标签: 数据 打印 应用 方案