B/S模式中用VS2008设计水晶报表的打印与套打
网友 网络

随着计算机技术的发展与普及,越来越多的单位或部门使用无纸管理信息化,但是无纸管理信息化并不是绝对的,在一些场合现在还不能完全无纸化,还要将计算机处理结果以报表形式通过打印机输出到纸质上,如公司产品销售的发票打印等。在B/S架构中,常规的打印方法是使用浏览器中的文件菜单中的“打印”。使用这种方法打印虽然简单,但打印出来的页面会出现你所不希望出现的页眉、页脚、页码及背景等,还会出现版面不美、布局不好的现象,而且无法实现套打。本文作者以ASP.NET技术为基础论述如何使用VS2008实现B/S架构的网页内容的打印与套打。

二、用VS2008创建Microsoft SQL Server数据库

1、打开VS2008,新建一个WEB窗体项目。

2、在“视图”菜单中选择“服务器资源管理器”或者使用热键CTRL+ALT+S将“服务器资源管理器”打开,如下图。

 

3、在窗口的左边栏,用鼠标右键单击“数据连接”,在弹出的浮动菜单中选择“创建新的SQL Server数据库”,则有新窗口弹出,在该窗口中有两件事要做:一是选择“服务器名”,如“47012CAAD3A04CE\SQLEXPRESS”;二是“新数据库名称”,如“library”。最后鼠标左键单击“确定”。

4、在上图中用鼠标的右键单击“表”,在弹出的浮动菜单中选择“添加新表”,那么在上图的右边中可以数据库添加表的“列名”和“数据类型”等。

5、用鼠标左键单击上图的右上角的“×”符号,有窗口出现,在窗口中单击“是”,然后又出现一个较小点的窗口,在这个窗口中输入数据库的表名,如“book”,然后再单击“确定”,那么这个表就建成,可以用手动方法或编程方法给空表添加数据。

三、页面打印功能的设计及相关代码

1、在“解决方案”中选择当前的项目,然后在当前项目中添加“数据集”,并在“数据集”中添加DataTable,如book

2、新建一网页文件,将VS2008中工具箱的CrystalReportSource控件拖放到网页上,然后配置报表源。这时可按报表生成向导进行报表设计。在报表生成向导中的“可用数据源”中选择前面已经创建的数据集中的那个book表。

3、将CrystalReportViewer控件拖放到网页上,点击CrystalReportViewer控件设置该控件的报表源。

3、在网页的合适位置放一个Button控件,并将Buttontext属性改为“打印报表”。双击该“打印报表”按钮,打开代码页,在代码页的命名空间处引入如下命名空间:

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;

//以上四行为页边距的设置。

oRpt.PrintOptions.ApplyPageMargins(margins);

oRpt.PrintOptions.PrinterName = "";

//这里设置打印机名,oRpt.PrintOptions.PrinterName当为空

//表示打印机为操作系统默认打印机。

oRpt.PrintToPrinter(1, false, 1, 1);

//代码中oRpt.PrintToPrinter(1, false, 1, 1)中的第一个参数为打印的份数

//第二个参数为是否设有逐份打印,false表是不逐份打印

//第三个参数为打印的起始页码,第四个参数为结束页码。

四、套打功能的实现

套打指的是将页面内容打印到一定格式的表格、发票、证件上,实现的步骤如下:

1、将要套打的表格、发票、证件等进行扫描,生成图片文件,或者使用图像工具进行绘制,不管是扫描的还是绘制的一定要与原件有同样的大小和比例。

2、打开报表文件,在Crystal Reports 菜单上选择“插入”,再选择“ole对象”,在弹出的窗口中选择“由文件创建”,通过浏览在电脑上选择相关扫描或绘制的文件。

3、如果套打的内容是由数据库管理的,那么在报表的“字段资源管理器”中的相关的数据库字段拖放在报表的表格、证件、发票的要打印的位置,根据要求设计字体、字形、大小等。如果套打的内容不是由数据库管理的,那么就拖入其它相关字段。如下图

 

4、选择刚才插入的ole对象,右键单击该对象,选择“设置对象格式”,在弹出的窗口中勾选“抑制显示”。这样做的目的是使打印时不再打印水晶报表中的表格、证件、发票等(换句话说,这里的表格、证件、发票起的作用仅是为了能准确将打印的内容打到指定位置),而只打印要打的相关字段。

5、相关代码与前所提及的类似,但是如果打印的纸超过A4大小,需要修改下面的语句:

oRpt.PrintOptions.PaperSize = PaperSize.DefaultPaperSize;

如将DefaultPaperSize改成PaperA3,这里表示纸的大小为A3

五、WEB服务器的水晶报表环境

由于B/S架构中加入了水晶报表,所以需要服务器要有水晶报表的环境,这一点是容易被忽视的,这就需要安装相关插件。在安装插件时有两种方法:

1、
在装有vs2008的计算机的“program files”文件夹上可以搜索到“CRRedist2008_86.msi”文件,将它拷贝到WEB服务器并在该服务器上安装。

2、
也可以使用打包的方法。在给网站打包时,在打包项目的属性窗口中,单击“系统必备”,然后窗口中勾选“crystal reports basic for Visual studio 2008”,再将“指定系统必备组件的安装位置”选为“与我的应用程序相同的位置下载系统必备组件”。在安装网站时,会自动安装CRRedist2008_86.msi

CIO之家 www.ciozj.com 公众号:imciow
关联的文档
也许您喜欢