标题 | 管理信息化中水晶报表的打印与精确打印的实现 |
范文 | 艾灵仙 [摘 要] 在管理信息化中,虽然说是“无纸信息化”时代,但是实际上在很多场合离不开纸质的打印或精确打印。本文主要论述用Visual Studio 2008在.NET网页中如何添加Microsoft SQL Server数据库和报表源,如何创建报表文件,如何通过添加按钮控件及相关代码实现B/S架构下水晶报表的打印与精确打印。 [关键词] 管理信息化;水晶报表;打印;精确打印 [中图分类号]F232[文献标识码]A[文章编号]1673-0194(2009)04-0012-02 随着计算机技术的发展与普及,越来越多的单位或部门已基本实现无纸管理信息化,但是在一些场合现在还不能完全无纸化,还要将计算机处理结果以报表形式通过打印机输出到纸上,如公司产品销售的发票打印、企业资格证等。在B/S架构中,常规的打印方法是使用浏览器文件菜单中的“打印”。使用这种方法打印虽然简单,但打印出来的页面会出现你所不希望出现的页眉、页脚、页码及背景等,还会出现版面不美、布局不好的现象,而且无法实现精确打印。本文以ASP.NET技术为基础论述如何使用VS 2008实现B/S架构下的网页内容的打印与精确打印。 一、用VS 2008创建Microsoft SQL Server数据库 1. 打开VS 2008,新建一个Web窗体项目。 2. 在“视图”菜单中选择“服务器资源管理器”或者使用热键Ctrl+Alt+S将“服务器资源管理器”打开,见图1。 3. 在窗口的左边栏,用鼠标右键单击“数据连接”,在弹出的浮动菜单中选择“创建新的SQL Server数据库”,则有新窗口弹出,在该窗口中选择“服务器名”,如“47012CAAD3A04CESQLEXPRESS”(如果“服务”中的SQL Server Browser没有开启,则找不到服务器名),再填上“新数据库名称”,如“library”。最后用鼠标左键单击“确定”。 4. 在图1中用鼠标的右键单击“表”,在弹出的浮动菜单中选择“添加新表”,那么在图1的右边可以在数据库中添加表的“列名”和“数据类型”等。 5. 用鼠标左键单击图1的右上角的“×”符号,有窗口出现,在窗口中单击“是”,然后又出现一个较小的窗口,在这个窗口中输入数据库的表名,如“book”,然后再单击“确定”,那么这个表就建成了,可以用手动方法或编程方法给空表添加数据。 二、页面普通打印功能的实现 1. 在“解决方案”中选择当前的项目,然后在当前项目中添加“数据集”,并在“数据集”中添加DataTable,如book。 2. 新建一个网页文件,将VS 2008中工具箱的Crystal Report Source控件拖放到网页上,然后配置报表源。这时可按报表生成向导进行报表设计。在报表生成向导中的“可用数据源”中选择前面已经创建的数据集中的那个book表。 3. 将Crystal Report Viewer控件拖放到网页上,点击Crystal Report Viewer控件设置该控件的报表源。 4. 在网页的合适位置放一个Button控件,并将Button的text属性改为“打印报表”。双击该“打印报表”按钮,打开代码页,在代码页的命名空间处引入如下命名空间: using CrystalDecisions.Shared; using CrystalDecisions.ReportSource; using CrystalDecisions.CrystalReports.Engine; 并且在Button事件中加入如下代码: ReportDocument oRpt = new ReportDocument(); oRpt.Load(Server.MapPath("CrystalReport1.rpt")); // CrystalReport1.rpt为前面所建的水晶报表文件的默认名。 oRpt.PrintOptions.PaperSize = PaperSize.DefaultPaperSize; //设置纸张尺寸为默认尺寸。 PageMargins margins; margins = oRpt.PrintOptions.PageMargins; margins.bottomMargin = 0; margins.leftMargin = 0; margins.rightMargin = 0; margins.topMargin = 0; //以上4行为页边距的设置。 oRpt.PrintOptions.ApplyPageMargins(margins); oRpt.PrintOptions.PrinterName = ""; //这里设置打印机名,当为空表示打印机为操作系统默认打印机。 oRpt.PrintToPrinter(1, false, 1, 1); //代码中oRpt.PrintToPrinter(1, false, 1, 1)中的第一个参数为打印的份数 //第二个参数为是否设有逐份打印,false表是不逐份打印 //第三个参数为打印的起始页码,第四个参数为结束页码。 三、网页中精确打印功能的实现 精确打印指的是将页面内容打印到一定格式的表格、发票、证件上,实现步骤如下: 1. 将要精确打印的表格、发票、证件等进行扫描,生成图片文件,或者使用图像工具进行绘制。不管是扫描的还是绘制的,一定要与原件有同样的大小和比例。 2. 打开报表文件,在Crystal Reports 菜单上选择“插入”,再选择“ole对象”,在弹出的窗口中选择“由文件创建”,通过“浏览”在电脑上选择那个扫描或绘制的图片文件。 3. 如果精确打印的内容是由数据库管理的,那么将报表的“字段资源管理器”中的相关的数据库字段拖放在报表的表格、证件、发票的要打印的位置,根据要求设计字体、字形、大小等。如果精确打印的内容不是由数据库管理的,那么就拖入其他相关字段。如图2所示。 4. 选择刚才插入的ole对象,用鼠标右键单击该对象,选择“设置对象格式”,在弹出的窗口中勾选“抑制显示”。这样做的目的是使打印时不再打印水晶报表中的表格、证件、发票等(换句话说,这里的表格、证件、发票起的作用仅是为了能准确地将打印的内容打到指定位置),而只打印要打的相关字段。 5. 相关代码与前所提及的类似,但是如果打印的纸超过A4大小,需要修改下面的语句: oRpt.PrintOptions.PaperSize = PaperSize.DefaultPaperSize; 如将DefaultPaperSize改成PaperA3,这里表示纸的大小为A3。 主要参考文献 [1] 邵鹏鸣. ASP.NET Web应用程序设计及开发(C#版)[M]. 北京:清华大学出版社,2007. [2] 刘化果. Visual Basic.NET开发实例完全剖析[M]. 北京:中国电力出版社,2006. [3] 卢智勇,等. Visual Basic.NET数据库程序设计与实例[M]. 北京:冶金工业出版社,2005. [4] 唐远涛. 基于Web报表开发的研究与应用[D]. 成都:成都理工大学,2006. [5] 贾洪艳,林庆. 基于.NET的高校教师绩效考评系统的设计[J]. 科技广场,2007(3). [6] 李涛,屈展. 基于.NET的Web动态报表研究与实现[J]. 科技广场,2008(3). |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。