XAML的水晶报表打印

作者:孙英鹏   撰写时间:2019年6月8日

关于水晶报表打印是从MVC里头认识到的,水晶报表打印顾名思义就是把你想要打印的数据统统放在一起,画好表格从而进行打印,对于水晶报表会运用在哪些工作方面上呢?例如:工资单、工作表、考勤表等一些打印报表。对于XAML的水晶报表打印和MVC的水晶报表打印有区别吗?答案是差不多,都没什么区别,只不过XAML的水晶报表打印有点麻烦(个人感觉),至于怎么打印我们来看一下。

首先要装上水晶报表插件,关于插件你可以网上搜索,如果你有的话,直接省略。

第一步:首先在你要创建的地方点击右键,找到添加在找到新建项点击确定,弹出一个框后,找到Visualc#的下面的数据进行点击,然后在点击数据集,进行创建。

第二步:创建完后,开始做数据集表格,创建数据表格有两种方法。
第一种是手动创建,点击右键找到DataTable,自动添加数据,是很麻烦的。我来举一个例子,比如:我现在要打印员工信息,要打印员工图片,把数据库的图片名称复制过来,粘贴在表格里面,它创造出来的数据类型是默认状态下的,所以你要把数据类型改为你数据库的对应数据类型,不然会打印不出来的。改数据类型是点击右键找属性,右边会出现一个框,点击DataType旁边的下拉框,找到对应的数据类型,我这里的员工图片类型是对应着Byte类型。
第二种方式是创建另外一种表,通过储存过程来创建表,点击右键找到TableAdapter点击它,会弹出一个配置向导窗口,选择新建连接通过数据库来创建表,打开之后,如果你是第一次创建,不知道连接那种数据库,就要看清你数据库是用哪个的,我这里是SQL Server,所以点击Microsoft SQL Server,然后点击继续它会自动的回填出来,接下来就是连接数据库,把数据库的服务名称复制下来,粘贴在服务器名,然后在登录服务器,使用账号登录,我这里的是SQL登录,所以我是点击SQL身份登录,如果你们是Windows就点Windows登录,然后输入账号和密码,接着选择数据库名称并测试连接,成功就确定,然后点击是与否(随便点)并下一步,直到输入SQL语句是停住,接下来就是编写打印数据的查询。

首先打开SQL数据库,在你的数据库表里找到可编程性里的储存过程,点击右建点击储存过程(看图1),开始编写员工信息的查询语句,把储存过程里面的自定义代码删掉,只留下基本的代码就行了。

图1:
在这里插入图片描述

写查询员工信息时,先写一个IF,然后在里面写上一个查询名字,然后写上BEGIN(开始)和END(结束),紧接着就是写查询语句,首先点击右键,在点击在编辑器中设计查询,将会弹出一个页面,在里面找到要打印的数据表,踢上钩点击确认,信息就会出来在表里面,然后把一下数据去一下空格,查询语句就完成了。然后把BEGIN和END中间的代码复制,然后粘贴到刚刚的VisualStudio里面的SQL语句空白框里,点击下一步完成就好了,是与否(随便点),然后自动创建表格出来,由于是通过数据库创建出来的不用改写数据类型。

第三步:创建水晶报表,步骤和上面一样,只是找到Visualc#的下面的Reporting进行点击,点击CrystalReports就创建出来了,创建之后,选择空白报表确定,然后把数据集的数据弄过了,首先右键点击数据库字段,找到数据库专家,点击项目数据下面的ADO.NET数据集在点击下面,将会出现你创建的数据集,把数据集弄过去(看图2,弄过去是点击红笔圈出来的按钮),点击确定,然后会出现窗口,不用理它,直接确定就好了,接下来是画打印的东西,我就不说了(每个人的打印画面是不一样的,看图3)。

图2:
XAML的水晶报表打印_第1张图片

图3:
XAML的水晶报表打印_第2张图片

第四步:弄好了水晶报表,接下来的就是要让它显示在XAML的窗口里面,它是不可以显示的,必须要弄到水晶报表的内部的一个插件,首先把插件引进进来,如果水晶报表不是装到其他的盘话,一般它的默认路径都是C盘的,首先找到引用,点击右键添加引用,然后点击浏览在里面找到路径,
默认路径是:
C:\Program Files(x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86\dotnet,然后找到两个插件,分别是SAPBusinessObjects.WPF.Viewer和SAPBusinessObjects.WPF.ViewerShared,点击添加确定就行了。

第五步:创建一个窗口页面,把刚刚引用的插件引用到页面上,代码(看红1),然后写一句代码引用刚才编写的控件(看红2),弄好之后就弄后台代码,后台代码是把水晶报表弄到控件里面去的,先写一个Loaded事件,然后在跳到后台编写代码,为了把数据弄过去,要先把服务端写了,首先传递打印的主键ID,在编写代码(看图5)写完运行一下,接下来就是配置服务(我的项目服务端有三个命名,分别是BLL、DAL、WcfService),是在WcfService配置。首先点击Web,然后右键点击WPF配置,弹出窗口之后,点击服务,然后在点击新建服务会弹出窗口,然后浏览找出你在BLL编写的代码,点击确定,然后复制名称(因为后面会用到),点击下一步,下一步,直到终结地址停下,把地址删掉让它空白,然后下一步保存。然后终结点要保持名称一致,把复制名称粘贴上去。然后把服务行为归类到BLL里面(因为是在BLL编写的代码),然后新建工厂,点击高级下面的宿主环境,有三个点击最下面的serviceActivations,然后点击新建,我们只需要配置上面两个服务就好了,把复制名称粘贴上去,第一个要在后面加上 .svc然后复制名称,然后关闭保存,运行服务端会出现页面,在页面地址后面加上斜杆和把刚才的复制名称加上去,点击确定看一下是否配置成功,成功之后在客户端创建服务,点击右键找到添加服务引用,把.svc的地址复制在上面,点击确定就行了。

图4:
XAML的水晶报表打印_第3张图片

图5:
XAML的水晶报表打印_第4张图片

第六步:在后台引用服务端,然后开始编写代码,一共分为三步:第一步是获取数据,第二步是合并数据集,第三步是绑定窗口控件。
先来看一下第一步,第一步又有三步:
1.是获取页面传递过来的数据,获取传递过来的员工ID,创建临时数据表格dt1保存基本数据,提取图片名字。
2.是读取图片,首先获取图片路径,IO流读取图片和转换为byte[],从流中读取字节块并将该数据写入给定缓冲区中。
3.是创建临时表格,先实例化数据表,给数据表创建对象,给数据表添加行数据(获取图片)。
第二步:先实例化数据集,把数据集和表格合并。
第三步:先实例化水晶报表,给水晶报表设置数据集,打开第三方控件(绑定数据)。

第七步:配置文件,配置文件是不可以直接运行水晶报表的,所以我们要改文件,首先找到App.config文件点击进去,下面默认的版本是4.5.2是不接受水晶报表,所以要加一个配置,是一行代码(看图6),写完运行一下就可以了,就能运用水晶报表打印东西了。

图6:
在这里插入图片描述

你可能感兴趣的:(XAML的水晶报表打印)