管理信息化中水晶报表的打印与精确打印的实现

2009-03-02 02:43艾灵仙
中国管理信息化 2009年4期
关键词:管理信息化

艾灵仙

[摘 要] 在管理信息化中,虽然说是“无纸信息化”时代,但是实际上在很多场合离不开纸质的打印或精确打印。本文主要论述用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).

猜你喜欢
管理信息化
浅谈交通运输部门人事档案管理的信息化建设方向
浅谈目前我囯船员结构状况的改善方案
医院人事档案管理信息化建设中存在的问题及对策探究
企业人力资源管理信息化存在的问题及对策研究
国有企业人力资源管理信息化的问题与对策
我国机械制造业管理信息化特点和发展趋势
对我国企业管理信息化建设的浅析(一)
医院固定资产管理信息化探析
关于商业企业管理信息化探析
机械设计项目管理的信息化探讨