打印报表(共7篇)
打印报表 篇1
一般用VFP制作打印报表表格有3种方式:一是用报表设计器设计制作报表表格,二是将数据转换到Excel再用Excel制作出报表,三是直接编程实现报表输出打印,它们各有优点和不足之处。
凡还在使用VFP工具开发应用系统的人都使用VFP数据库开发系统提供的报表生成器设计报表,用VFP报表设计器可以很容易的制作出漂亮的报表。在大多数MIS中,报表的格式都是预先确定的,并由专业软件人员编程完成,仅限于系统开发时按用户需求定制的几种报表格式,所以仅能输出一些固定的报表,用户自己不能做出改变。若用户报表格式或报表中某项数据发生变化,都需要软件人员再开发或繁锁的调整,这就造成报表系统在使用周期中维护工作繁重,不能满足用户不断变化的需求特别是对于一些突发性临时报表的需求,更是无能为力,特别是报表栏目数(列)经常变动的报表,大家应该有所体会。所以它比较适合那种固定格式的报表表格。将VFP数据转换至Excel,然后利用Excel强大方便的表格编辑功能制作报表是一种很好的方法,特别是要制作复杂表头及数据处理的报表类型,但是这需要转换和熟练的Excel操作经验,操作步骤较多。用编程方式制做表格,这在以前的Dbase和Foxbase上就是这么制作表格。但它制做繁琐,难度大,要有丰富的编程经验,并且调试和修改不容易,所以已被淘汰,很少有人用了。不过,为了方便用户,应用软件作者应提供多种数据输出方式,以便用户可以将几种方法结合使用。如固定格式的报表用报表设计器设计制作;复杂表格可用Excel转换处理。
这里提供一个编程输出报表的方法。虽然只能实现简单表头样式,但它可以实现选择任意字段数目和任意排列字段顺序输出功能。可做为以上两种报表输出的补充。该程序可由窗口进行字段的记录范围选择,并可设定输出参数来实现输出方式和格式。虽然该方法制作表格有许多不足之处,但它也给一些用户提供一种选择。表单主要事件代码如下(仅供参考)。
先设计一表单,如图1所示。
1表单控件command1(确定)的click事件代码
以上代码,可用于嵌入自己开发和VFP应用程序中,以提供一个表格输出打印的方法。也可以做成为一个表格打印表单单独使用。以上程序在中文VFP6中和VFP9中测试通过,并应用于本单位自编的管理系统中。
摘要:利用Visual FoxPro编程输出打印报表表格,该方法具有可以实现选择任意字段数目和任意排列字段顺序输出功能,可做为报表输出的一种补充形式。该程序可由窗口对VFP数据表进行记录和字段范围选择,并可设定输出参数来实现输出方式和格式,具有一定的实用性。可根据自己的需要将其作为一个功能模块放入应用系统中,也可独立作为一个表格打印工具使用。
关键词:编程,表格打印
参考文献
[1]Microsoft Corporation Visual Foxpro 6.0.
[2]Microsoft Corporation Visual FoxPro6.0语言参考手册.
[3]方可燕,主编.Visual Foxpro6.0实战与精通.清华大学出版社.
打印报表 篇2
(INTOUCH)软件中缺少打印报表的功能,因此本文给出了在(INTOUCH)脚本中进行数据存储管理,并调用EXCEL,应用EXCEL宏功能实现打印报表的自动生成。
1 EXCEL表格及运行宏
1.1 ACCESS数据库文件
首先新建一个ACCESS数据库文件“DD1”,并新建一个表。定义一个数据源“DD1MDB”,选择数据库“DD1”作为其对应文件。
1.2 建EXCEL表格模板
根据用户生产要求设计EXCEL表格模板如图1。
1.3 EXCEL的宏功能
EXCEL提供一个Visual Basic编辑器,运用Visual Basic语言编写函数和过程并称之为宏。当用EXCEL打含有启动宏的工作簿时,就会自动运行启动宏。以下是在EXCEL的宏中所编写VB程序自动实现从ACCESS数据库中取出所需数据,然后放到所建的EXCEL表格模板中,从而产生所需的生产报表。
2 INTOUCH绑定列表及脚本
2.1 绑定列表、表模板
在INTOUCH中的SQL访问管理器中建立绑定列表。如图2建立的列表“FIT_report”
这个表给出了将要在报表里做记录显示的数据。之后给出表模板,定义数据类型及长度。
2.2 INTOUCH脚本
以下为INTOUCH脚本,主要内容包括连接数据源,每0.5h存储一次数据,在早上8:00后执行一次调用EXCEL生成打印报表。
3 结束语
本文论述如何在InTouch组态软件中应用EX-CEL,进行企业生产报表的生成:分析了报表数据的存储方式及提取方法,在此基础上实现了对生产过程各项参数等的报表自动生成。对开发InTouch应用系统软件及其他组态软件的工业控制系统的生成报表都具有一定的借鉴意义。
摘要:介绍如何在INTOUCH中应用EXCEL宏功能来进行企业生产报表的自动生成,给出了EXCEL的宏中所编写VB程序以及INTOUCH脚本。
关键词:EXCEL,宏,打印报表
参考文献
[1]贾西科.网络中报表打印方法[J].电脑编程技巧与维护,2009,(10):107~108.
打印报表 篇3
关键词:VisualFoxpro,报表打印,图片处理,VFP代码
1 概述
本人长期从事考务软件编写,多年来采用的是FOXPRO,所购多本书籍对表单的使用阐述翔实,但对报表确是一般,对于本文所说的图片打印就更少了,一般都是一段话带过。
作为普通数据库应用软件,开发者常考虑算法和界面,使用者常注意的是纸质报表是否满意;而信息资料类(包括人事、考务、货物等等)实体数据库应用软件的重心就是纸质报表,所以对报表要求更高。
所谓信息化管理在实际工作中就是对人、财、物的管理,而人和物的管理就必须涉及到图片。报表打印图片的软件很多,本文仅讨论用Visual Foxpro开发的软件中的报表图片打印。(以下所提均在Visual Foxpro系统中,后面不再说明)
2 Visual Foxpro中打印图片方式介绍
报表打印图片全部采用的是“Picture/OLE”控件,该控件有三种方式显示图片,下面就分别加以简要说明:
2.1 Image file name(图片文件名)
该方式将指定一个图片文件作为图片源,与数据表无关。
2.2 General field name(通用字段名)
该方式将指定一个已知的数据表的某通用字段类型字段名做为图片源。根据记录的变化而变化对应的图片,报表中常用此打印图片。
2.3 Expression or variable name(表达式或变量名)
该方式最为复杂,在使用时指定一个包含图片信息的字符串表达式,或一个代表图片对象的变量作为图片源。根据表达式值中图片文件信息的变化而变化图片。
3 各类方式在实际工作中的优缺点分析
采用Image file name方式由于与数据表无关,不能做为报表中图片数据源,此方法常用于报表中显示单位徽章等。
采用General field name方式最大的好处在于使用简单,它完全依赖于数据表中General field的内容,图片的有无与查错由数据表完成,不会有错误。此方法在实际应用中的软肋是数据表,因为通用字段不是很好操作,对图片的处理也不理想,嵌入字段中的图片数据记录多使得表文件变得十分庞大;图片若有变动,需重新更新数据。虽然数据表可采用链接方式来弥补,但图片文件如有移动需全部重新链接,通用字段的不易编辑性仍然无法避免。
采用Expression or variable name方式可避免通用字段的诸多弱点,因为根本就不用通用字段类型。它所采用的方式是用表达式或变量将记录与图片文件相联系。这种方法好处在于数据表简单、图片文件独立、不用更新、系统运算快等;但却存在两个问题;第一,需写出两者相关的表达式;第二,不是每个记录都有存在的图片文件,一旦不存在图片或格式不对,系统就会报停而无法继续打印报表,必须针对这种情况进行容错处理。
4 采用Expression or variable name方式的实例代码
下面就以打印个人照片为例说明第三种方法的使用方法及注意事项。
资料说明如下:
数据表文件:grzl.dbf(field:xm,c,8;wjm,c,8)(xm:姓名,wjm:照片文件名)
报表文件:zpdy.frx(内有一“Picture/OLE”控件,用“zpkj”表示,大小与版式已设计妥当,其余不谈),与grzl.dbf同在“work”工作目录下。数据环境为grzl.dbf,报表中其余控件已完成,页面设计完成,单独留下zpkj的位置。
图片文件均为jpg格式,存储于D盘photo文件夹下。
设计实现过程如下:
右击zpkj,选择properties,在general选项卡的control source type中选择Expression or variable name,在control source中录入表达式:"d:photo"+wjm+".jpg"。
考虑到空格因素,简略表达如下:zpkj右→properties→general→control source type→Expression or variable name,control source(“d:photo"+alltrim(wjm)+“.jpg")(以后均用此方式表示)。
如果资料完整,报表可正常打印,但如果照片不全,程序执行到无照片文件的记录时程序异常终止。考虑到程序的容错性,我们需要加控制语句:zpkj右→properties→print when→print only when expression is true(file("d:pho-to"+alltrim(wjm)+".jpg")=.t.)。
为了在报表中提示没有相片的记录,我们可以做一个空白的相片文件,相片内容就是“无相片,需录入”,文件名为:wzp.jpg,放在photo文件夹下。可将控制语句删除,而将前面control source中改为:((IIF(file("d:pho-to"+alltrim(wjm))+".jpg"),"d:photo"+alltrim(wjm))+".jpg","d:photowzp.jpg")。这样打印报表就完整了。
当图片文件位置变动时必须将源程序中关于图片文件的存放位置全部更改,显得麻烦。所以在实际工作中,我们通常在主程序定义一全局变量,比如:Public zpwj="d:photo"。这样最终编写结果如下:
zpkj右→properties→general→control source type(IIF(file(zpwj+alltrim(wjm))+".jpg"),zpwj+alltrim(wjm))+".jpg",zpwj+"wzp.jpg"))。
参考文献
Word模板在报表打印中的应用 篇4
在管理软件设计中,报表打印作为一项重要的用户需求,在设计过程中均要重点考虑。软件的报表功能不仅要求功能完善,而且对报表的格式要做到可定制,用户软件使用过程中,可以根据需要设置不同的样式。目前在软件开发中,大多都应用专门的报表控件,通过打印模板定制格式来实现报表打印,效果较好,模板可定制性也不错。但是,报表模板修改有一定难度,都要由开发人员专门完成,普通用户也要经过一定的学习后才能胜任,给用户的应用带来一定的局限。如果能通过一种比较简单的方法来定制打印模板,定制模板的可用性会大大提高,给用户在软件的使用中带来更大的方便。
1 总体思路
MS Word软件作为Office办公套装软件中字处理软件被大家熟悉并普及应用,其功能强大,可以有效地满足各种格式、样式排版要求,是目前使用最多的办公字处理软件。因此,如果在软件设计中,能应用Word软件设计报表的打印模板,就可以让普通的用户轻松自如地修改报表的格式和样式,使软件报表的可定制性大大提高,能满足用户报表格式的多种需求。
Visual Basic for Applications(VBA)是新一代标准宏语言,利用VBA,可以在MS Word软件中通过编写脚本来完成对文档的操作。因此通过应用软件接口,在应用程序中调用VBA来操作Word文档,给Word打印模板的应用建立了前提条件。在Word模板的设计中,用户只要按一般的文档编辑方式进行设计就可以达到模板编辑的目的。在模板的编辑过程中,在需要打印具体数据的位置,用特殊符号进行标识。在打印文档生成的过程中,应用程序会用特殊符号所对应的数据来替换该符号。当所有的符号标识被全部替换后,打印文档生成完成,用户最终利用生成的文档来完成打印。在应用系统的实际应用中,用户可以按自己的要求对Word模板中的格式进行任意设置,只要不删除符号标识就可以,修改完成保存后,Word模板就可以按新的格式进行打印。
2 VBA中的对象
Application对象 Application对象表示Word应用程序,是其他所有对象的父级,可以使用该对象的属性和方法来控制Word环境。
Document对象 Document对象是Word编程的中枢。当您打开文档或创建新文档时,就创建了新的Document对象,该对象被添加到Word的Documents集合中。焦点所在的文档叫做活动文档,由Application对象的ActiveDocument属性表示。
Selection对象 Selection对象表示当前选择的区域。在Word用户界面中执行某项操作时,应首先选择文本,然后应用格式设置。Selection对象始终存在于文档中,如果未选中任何对象,它表示插入点。
Range对象 Range对象表示文档中的一个连续的区域,由一个起始字符位置和一个结束字符位置定义。
Bookmark对象 Bookmark对象表示书签,用于在文档中标记一个位置。
3 具体设计
3.1 符号标识设计
符号标识采用“&标识表达式&”的形式,用一对“&”符号包含标识表达式,标识表达式可以是数据的名称、算术表达式、控制命令等等,由应用程序负责解释执行。
3.2 打开模板文件
VBA中的Application对象有一个Documents属性,表示当前Word应用程序打开的文档集合,用Open方法就可以打开Word模板。模板打开后,把当前文档中的所有内容复制到一个新文档中,然后关闭模板文档,这样可以保护模板不被用户无意修改。具体操作代码如图1所示。Fmso是Word的Application对象,在应用程序中创建,通过Selection对象的WholeStory全部选择文档内容,然后复制所选内容到剪贴板,关闭模板文档,新建新文档,在新文档中执行粘贴,把模板内容复制到新文档,最后把文档的光标移动到文档的开头,准备遍历文档。
3.3 模板遍历
打印文档生成过程就是对模板文档的遍历过程。在遍历过程中,要查找特殊符号标识,根据标识表达式替换标识符号。当文档遍历完成,符号标识也就被全部替换,打印文档生成完成。
Selection对象属性text可以获取当前选中文本,如果选中文本为空,就获取当前光标中的一个字符,所以在遍历中,首先查找“&”这个特殊符号。当查到第一个“&”符号,利用Selection对象的Selection.MoveRight(wdCharacter,1)方法开始选择特殊符号开始的字符串,直到选中的字符串的最后一个字符为“&”,就停止选中,分析标识表达式,根据表达式内容,进行替换。如果标识表达式是数据名称,就用该数据的取值给text属性赋值,进行替换;如果标识表达式是一个算术表达式,就计算表达式,然后用计算结果替换;如果标识表达式是控制命令,就执行相应的VBA脚本,用空格替换;如果标识表达式为空,表示这是一个“&”字符,而不是符号标识,用“&”符号进行替换。
3.4 控制命令设计
对于简单的报表,只要进行模板文档遍历替换就可以生成打印文档,对于需要通过读数据库数据,并且根据数据库中的行来输出数据的报表来说,就要通过控制命令动态控制生成。
某学校学生信息报表如图2所示,在打印报表生成的时候,由于不能预先知道报表的行数,所以模板设计不能一次设计多行表格。即使预先能设计多行表格模板,如果行数太多,模板的应用效率会很低,所以必须在打印报表生成的时候,动态进行操作。为此专门设计行操作命令和数据操作命令,行操作命令用于控制报表中行插入和行删除,数据操作命令控制数据表的当前行移动。
(1) 行操作命令——插入新行
格式:复制行[数据表名称,插入位置]
该命令在行开始执行,该命令执行后,会把当前行的内容复制到“插入位置”。“插入位置”是利用Word软件创建的书签(BookMark),并且给书签命名,这个书签的名称就是复制新行插入的位置。在打印文档生成的时候,当软件识别到标识表达式为“复制行”命令的时候,先通过数据表名称,找到数据表,然后判断该数据表当前行是否为数据的最后一行,如果是就不进行任何操作返回,如果不是最后行,那么就复制当前行,然后跳转到书签的位置,执行粘贴,最后在跳转回命令的位置,完成本次操作返回。
该命令的执行脚本如图3所示。首先在当前位置建立书签,名字为“inspect”,用于在完成行复制后跳转回来;然后执行选择整行的命令,再执行复制命令,把该行复制到剪贴板;接着跳转到“插入位置”,“插入位置”存储在变量sign中;最后执行粘贴,并跳转回到原位置。
(2) 行操作命令——删除行格式:删除行
该命令执行后,删除当前行。该功能通过执行Selection.rows.Delete命令完成。
(3) 数据操作命令——第一格式:第一[数据表名称]
该命令执行后,先按数据表名,找到数据表,然后把改数据表的第一行设置为当前行。
(4) 数据操作命令——向下格式:向下[数据表名称]
该命令执行后,先按数据表名,找到数据表,然后把改数据表当前行指针下移一行。
3.5 模板应用
针对图1所示的学生信息报表,设计打印模板,如图4所示。
命令“第一”用于把学生信息表当前行设置为第一行;行的开始部分执行“复制行”命令,根据学生信息表是否到达最后一行,来把该行复制到下一行的开始位置;每一行中,利用数据项目的名称,把该行数据进行替换;行的末尾执行命令“向下”,可以移动学生信息表的当前行向下移动一行;最后,当所有数据行都生成完成后,在最后一行执行命令“删除行”把多余的行删除。模板中表格第二行开始,用小方块标识的位置就是新行的插入位置,建立命名为“ip”的书签。
如果报表是一个主从式的报表,Word模板设计可以在主表的表格中,插入从表表格,然后分别进行控制,从而实现主从式报表。
4 Web应用程序报表应用
通过Word模板进行打印报表格式定制虽然简单方便,但也存在着问题。
(1) 打印报表生成速度慢。
由于报表模板中的标记符号要逐一替换,特别是按行打印的报表,不但要插入新行,还要对行中的标记符号进行替换,所以报表生成速度相对慢,用户等待时间过长,影响应用效果。
(2) 不易于在Web应用程序中应用。
由于报表生成速度慢,同时需要在服务器中安装Word软件来支持报表生成,所以在Web应用系统应用存在困难。
针对以上问题,对Word模板报表进行改进,就是把制作好的Word文档另存为HTML格式,这样Word打印模板就变成Web打印模板,应用程序根据Web打印模板来生成打印文档,最后再利用Word软件打印文档,完成打印。
Web打印模板是按文本文件格式存储,应用程序对文本中标记符号解析的速度非常快,可以迅速生成打印文档;同时对Web打印模板解析不用依靠Word软件,所以在Web应用系统的服务器中不用安装Word软件,就可以进行Web打印模板的应用,最终生成的打印文档下载到客户端以后再利用客户端的Word系统完成打印;对模板文件的修改仍然使用Word软件,修改完成后,保存为html格式即可,对于Web应用系统需要把保存的模板文件上传到Web服务器。这样一来,即可以保持模板修改定制的易用性,又有效地解决了存在的问题。
5 结 论
利用Word软件,定制Word模板是一种简单方便的应用程序报表的打印方法,该方法在多个软件系统中应用,效果较好。结合Web模板的优势,可以提高打印速度,并且能较好地在Web应用软件中使用,是一种有效的Web系统打印的解决方案。
参考文献
[1]李卫刚.用Dephi通过OLE机制实现对Office套件的控制[J].软件导刊,2009,8(11):54-56.
[2]郑武,郑文旺.Web报表的设计与实现[J].电脑编程技巧与维护,2009(22):73-75.
[3]王春红,何志林.基于XML的Web系统报表精确打印实现[J].现代电子技术,2007,30(5):133-135.
[4]吴铬,吴卫.Web报表生成系统的研究与实现[J].电脑知识与技术,2009,5(34):9722-9723.
[5]李汝光.Word文档自动化生成技术初探[J].山西广播电视大学学报,2010(6):18-19.
[6]任贤,唐凤仙,汤鹏杰.基于VBA的WORD操作自动评分系统[J].电脑知识与技术,2010,6(21):5802-5803.
[7]游中胜,李若溪,欧红叶,等.利用Word VBA及宏实现编校信息快速查询[J].编辑学报,2009,21(1):72-73.
[8]陈雄山.Word文档对象分析与自动阅卷的实现[J].现代计算机:专业版,2010(7):199-202.
[9]单天宇,王读祥.利用VBA快速实现Word文档格式的统一[J].考试周刊,2010(18):160-161.
打印报表 篇5
通过XML强大的自定义功能, 我们便能方便的自定义出我们所有需要的格式控制标签, 在服务器端进行动态编码后通过WEB服务器传到客户端, 然后在客户端进行格式解析, 根据服务器端定义的打印格式从客户端直接控制打印机打印出我们需要的数据报表形式。
2 可行性分析
由于现在的大部分数据库都支持XML格式的数据查询和转换, 如SQL Server 2000, Oracle 9i, IBM DB2等大型关系型数据库。只需要通过简单的设置就能直接进行XML数据转换工作。如果数据库不能支持直接XML数据转换, 也可以籍由一些服务器端脚本程序进行脚本转换工作。
客户端可以采用任意应用程序来读取服务器端生成的XML文件, 我们采用的是.NET, 客户端也不需要任何特殊的设置工作, 仅需要安装.NET framework分发包, 内部已经集成了XML解析器, 直接就可以通过使用.NET类库调用, 嵌入到IE浏览器中, 然后打开网页就可以进行工作, 直接在网页中运行。也没有操作系统限制, 从windows 98到windows xp都能很好的支持。
3 技术选择
由于报表打印比较复杂, 为了能够精确控制打印格式, 不能采用WEB浏览器页面打印的方式进行报表打印工作, 只能采取自编程控制客户端的打印工作。由于.NET framework的winform可以直接嵌入到网页中, 我们选择了在.NET Web平台下自编控件的技术。
服务器的工作流程为:
a.接受客户端的标准XML模版查询。
b.需要根据查询要求将数据库数据格式转换成标准的XML数据格式。
c.将XML数据通过80端口发送出去。
4 安全性
由于采用的是普通WEB服务器传送数据, 因此可以直接采用SSL安全套接字等已经成熟的WEB加密技术。同时还可以对XML进行数据算法加密, 在客户端再进行解密, 保证了传输的安全性。另外采用的是80端口, 不需要再另外新增加专用端口, 减少了安全漏洞的可能性。
5 在实现过程中所涉及的技术、方法
5.1 Net Web平台下的自定义控件
该控件是整个方案核心, 其原理较为简单, 就是要方便的解析出定义好的XML格式标记, 解读出文件中标记的参数定义, 最后将这些信息还原成打印机输出的图形格式。为了能表达出复杂的报表样式, 我们需要定义一些标记, 在这些标记中附加上具体的样式信息, 而我们的解析程序就是将图形输出到打印机, 由于打印机相对于显示屏的特殊性 (例如分页) , 因此我们不能直接采用网页浏览器的标签解析功能来打印, 需要自己来做一个满足打印机实际需要的打印“显示屏”。
实现该控件的关键是必须定义好通用的报表模板。通过分析大量报表格式及其功能需要, 我们定义了适合大量报表的通用模板标签:文本 (text) 和表格 (table) 。
5.2 读取SQL Server数据库中数据
我们的需要打印的数据基本上都是储存在关系数据库中 (如SQL Server) , 我们必须将SQL Server数据库中的数据转化成为XML文件格式, 才能使模板标签能读取。SQL Server2000是支持XML的, SQL Server不是通过提供一个方法保存XML文件来支持XML的, 而是提供了一个到关系数据的接口, 可以在表和其他数据库对象中读取XML数据, SQL Server所固有的XML功能包括:可以通过HTTP、FOR XML之句和OPENXML () 函数来访问SQL Server。综合分析以及根据我们实际业务需要, 我们利用FOR XML字句将数据读取成XML格式, 它的安全性比HTTP查询较高, 由于查询源代码用户是不可能看见的, 也没有采用OPENXML函数, 该函数耗费系统资源, 它是将数据库中的数据表转换成内存中的一个rowset。利用FOR XML方法从SQL Server表中返回数据, 可以把他们看成是XML数据, 我们可以在SELECT语句中运用FOR XML字句时, 另外他有三种模式可以以不同的格式来返回XML:RAW、AUTO和EXPLICIT。RAW模式将结果中的每个记录作为一个普通的行元素来返回, 它被包含在一个
5.3 利用XPath Expression类对XML文件进行排序
由于我们只需要对XML文档进行简单的排序, 我们不必采用常规的xsl:sort元素, 在进行xsl:for-each进行循环或用xsl:apply-templates调用模板时, 该元素的功能很方便、而且较为简单。但是, 在该方案中, 我们只需要简单对XML文档进行简单排序和显示数据, 用xsl:sort会大大降低计算机性能。在.NET平台下, 如果需要进行简单排序, 只需使用System.Xml.XPath名字空间里的几个类即可:
XPath Document:进行XML文档处理时, 提供一个快速、有效的、只读的Cache功能。
XPath Exception:当处理XPath产生错误时, 抛出一个例外。
XPath Expression:保存在调用XPath Navigator的Compile () 方法时生成的、经过编译的XPath表达式。
XPath Navigator:提供一个指针模型, 供我们读取支持IXPath Navigable接口的所保存的任何类型的数据。由于这个类是个抽象类, 必须使用Xml Document、Xml Data Document或XPath Document的Creat Navigator () 方法来创建, 创建了XPath Navigator对象后, 我们就可以Compile () 方法编译一个XPath表达式, 这个方法返回一个XPath Expression类, 它封装编译过的表达式, 同时也允许我们进行排序。一旦我们对XPath表达式添加了排序的功能, 我们就可以调用XPath Navigator对象的Select () 方法, 并把编译过的XPath表达式作为参数, Select () 方法返回一个XPath Node Iterator对象。
XPath Node Iterator:遍历节点集合。
打印报表 篇6
1 控件与打印技术简介
1.1 MSHFlexGrid控件
Microsoft Hierarchical FlexGrid(MSHFlexGrid)控件提供了类似EXCEL电子表格的功能,控件可对表格中数据进行显示和操作,并且在对包含字符串和图片的表格进行分类合并及格式化时,具有很强的灵活性。
此控件中的Cols和Rows属性决定了MSHFlexGrid控件中的列数和行数,Row和Col属性指定了当前单元格,使用鼠标或者方向键可改变单元格的位置,TextMatrix(i,j)属性为显示网格中i行j列位置的文本内容,可进行读写赋值,表中单元格的列宽、行高分别由ColWidth和RowHeight属性进行设定。
1.2 打印技术
VB提供了三种打印正文和图形的技术:
(1)在窗体中建立所需要的输出,然后调用PrintForm方法打印窗体。
(2)先设置Printers集合中的缺省打印机,再传送正文和图形到打印机。
(3)先传送正文和图形给Printer对象,再进行打印输出。
因为Printer对象是一个与设备无关的图片空间,支持用Print、PSet、Line、PaintPicture和Circle方法来创建文本和图形,并将文本和图形与打印机的分辨率、功能进行了最佳的匹配。
采用Printer对象打印输出,主要需设置CurrentX和CurrentY属性,这两个属性决定Printer对象当前页中的输出位置。
2 实现思想
假设需打印的内容通过查询已显示在MSHFlexGrid控件中如表1。
由于MSHFlexGrid行列值(ColWidth、RowHeight)与Printer对象在输出时默认行列值单位一致的,所以报表输出只要结合A4纸的尺寸大小,统计出在MSHFlexGrid控件中的内容所需页数、每页的行、列位置,然后调用打印过程。
窗体打印过程Print_Grid1:根据MSHFlexGrid控件中行高、列宽及行列数,计算出每页开始与结束的行、列位置及行、列方向所需的页数,总的页数为行列方向页数的乘积,然后以求得的每页开始与结束的行、列位置为参数调用打印过程Print_Grid2。
过程Print_Grid2:为单页打印,利用Printer对象,通过Print_Grid1的多次调用本过程,可将MSHFlexGrid控件上的数据逐页全部打印输出。
3 程序代码
3.1全部页码打印程序
'注:因为打印是以缇为单位的,1厘米=567缇,A4纸大小为21厘米(宽)×29.7厘米(高),所以转换为缇为单位的大小是11907缇×16839.9缇,故打印中横向、纵向不应超过这二个数,上面程序设定横向不超过10500缇,纵向不超过14000缇,用变量L表示
3.2 打印单页过程
4 结束语
利用MSHFlexGrid控件与Printer对象的配合,采用两个过程,实现动态报表的显示与打印,解决了其它方法在VB上难以实现的动态报表输出问题。
摘要:介绍在VB中引用MSHFlexGrid控件、Printer对象,将显示在MSHFlexGrid控件中的动态报表打印输出的设计思想与程序源码。
关键词:动态报表,打印,MSHFlexGrid控件,Printer对象
参考文献
[1]E Winemiller,J Roff、B Heyman著.Visual Basic6.0数据库开发.顾斌,杨德斌,译.北京:清华大学出版社,2002.
打印报表 篇7
水晶报表(Crystal Report)是业内比较专业、功能比较强的报表系统,它除了强大的报表功能外,最大的优势是实现了与绝大多数流行开发工具的集成和接口。它是一套完整的Web报表制作解决方案,让您容易制作网络报表。其特点主要包括:功能强大的工具,可将报表制作功能与Web及Windows应用程序结合;可利用各种资料来源,建立简报品质的精良报告;与微软Office紧密结合的报表制作功能;快速的报表处理功能;可弹性地传送报表;与Crystal Reports商业智能产品家族完全结合;支持应用程序的强大报表制作功能;享用前所未有的弹性与操控能力;完成应用程序资料的报表。
从简单到复杂的报表,Crystal Reports都可以协助您存取、分析、报告及分享数据,结合使用容易、具弹性、功能强大的特性,提供简报品质的报表。Crystal Reports用于处理数据库,帮助用户分析和解释重要信息。使用Crystal Reports可以方便地创建简单报表,同时它也提供了创建复杂或专用的报表所需的整套工具[1]。
2 概论与分析
当前,发达地区的高校已经实现了统一的信息化管理,新生入学一旦缴费,发票就通过计算机信息系统自动打印出来,同时住宿的房间号也相应的分配。随着高校办学规模不断扩大,多校区办学已是普遍的现象,那么一般需要配备多台打印机(多是针式的),同时针对多台打印机需要设定打印发票的格式。一般来说,在.Net环境下,财务报表的开发通常使用的是其自带的水晶报表,而报表格式调整一般在源代码下,这样给操作者在发票打印中带来了不便,为了解决这一问题,本人借用了从Delphi自带的FastReport控件。
3 FastReport控件的介绍
FastReport的基本思想来源于Windows版的“1S-Bookkeeping”6.0,因此报表的基本元素是包含多行文本的矩形。这些文本既包含标准文本又包含变量。变量,像数据字段,用方括号突出显示。报表生成器的第一个版本仅支持一个区域,但它允许创建多层报表。它还不是一个组件,只是一些单元的集合。
后来,在1998年,报表生成器变成一个完整的Delphi组件。在这时,它命名为“FastReport”,并提供增强的函数功能。现在FastReport是高弹性的报表设计器,用于报表的数据可以从任何类型的数据源获取,包含字符列表,BDE数据库,ADO数据源(不使用BDE),Interbase(使用IBO),Pascal数组和记录,以及一些不常用的数据源。
整个FastReport系统是用Delphi的Pascal编写的。FastReport不需要动态链接库,但需在你的项目中占用大约400kb(Delph5)。如果你想最终用户拥有设计能力,这将在你的.EXE中增加大约500kb。虽然这看上去比较大,但这只是其它设计的几分之一。你同样应该考虑到FastReport不仅仅只是包含最终用户更改报表设计的能力,还能够适应查询和数据库的变化。FastReport还包含自己的脚本语言,让应用程序和最终用户能够更容易地改变报表。如果你的大部分应用使用FastReport,你可以简单地配置FastReport BPL(大约1400kb)而所有你的应用程序只需要保留很少的一部分[2]。
你可以发现FastReport有一个非常吸引人的用户界面,使用最新的用户界面组件,例如可停靠的工具栏。你的最终用户将会非常愿意使用这个设计器,只需使用鼠标就可以创建大多数报表。
FastReport是名副其实的快速报表:较其它一些Delphi报表设计器而言,你可以发现没有什么可以接近于它的开发速度。报表预览窗口一直是大多数报表设计器的弱点,高品质的外观,赋于你的应用程序非常专业的用户界面。
FastReport控件的优点。
1)在商业的应用方面
现代的商务管理已经不再满足于仅仅简单地应用那些浅显的报表。对于经济学和商业事务的专家而言(不同层次的管理者、分析师和其他领域的专业人士),报表是他们做出决策的依据,他们需要根据自身的要求制作适合的报表。针对这种需求FastRepor Studio提供了完整的解决方案,用户可以完全独立得使用这些工具,包括强大的多功能的报表编辑器(报表同样可以包含对话框窗体和宏语言――多种特别的创建方式可供选择);报表发布工具――可将报表用于打印或者导出为多种不同格式的文件并保存[3]。
2)在开发者应用方面
对于开发者而言,这是一个COM库,它提供了在编译后的界面中,手动调整报表格式,同时,分析来自不同数据源的数据的可能,并可以将数据结论用漂亮而简洁的图表表现出来。由于这个库包含了Basic,C++,Java和Pascal宏语言的解释器,这样用户就可以在生成报表的过程中动态地管理这些数据,并可以将任意复杂的分析机理同样包含在报表中。用户还可以在报表中添加交互的对话框单元,这使得报表生成器具有更高的灵活性和大大扩展了报表的实际用途。因此,与最终用户进行逻辑性的交互,从而令用户具备管理报表能力的功能也可以包含在生成的报表中[4]。
4 应用FastReport控件在财务系统发票打印
1)实现FastReport控件GUI窗口的嵌入
首先将FastReport[1].v4.6.8.Full或者其他版本安装其默认目录下,然后在解决方案中添加引用,在添加引用的对话框中选择COM,从中找到FasteReport3 report generator点击确认。如图1所示。
2)FastReport控件的调用
当学生来缴费时,学校的财务工作人员将首先进入财务系统,在”本次缴费金额”一栏中
入缴入的金额,同时添上其他辅助信息,点击”自动计算”按钮,将为学生形成一条缴费记录。如果要调整发票打印的格式,可以点击”打印格式重置”按钮从而调用FastReport控件,如图2所示。
最后通过点击”打印”按钮,打印出发票。
3)FastReport控件,C#代码的处理
第一步:using FastReport,接着实例化一个TfrxReportClass类frx,用该类的方法来显示报表调整的格式,及浏览、打印报表。
第二步:实例化FrxDataTable的一个数据报表类datatable,用该来接受需要打印的数据格式及内容。
第三步:放一个空的.NET Data Demo.fr3放到指定目录下,同是利用frx.LoadReportFromFile("..//..//.NET Data Demo.fr3")来链接它。
第四步:datatable.AssignToReport(false,frx)将数据格式绑定到报表。
最后:利用frx.DesignReport()和frx.ShowReport()来显示报表格式及浏览、打印报表。
5 结束语
本文论证了财务系统中FastReport控件的利用,为以后报表的打印提供了一个新的途径。
参考文献
[1]Peck G.水晶报表设计与开发大全[M].李行武,施研然,译.北京:清华大学出版社,2004.
[2]周爱民.Deplthi源代码分析[M].北京:电子工业出版社,2004.