数据导出 水晶报表

21 篇文章 0 订阅
19 篇文章 0 订阅

今天我们来说一下水晶报表该怎么打印。打印水晶报表之前,首先的当然是整理下思路啦!

水晶报表也是肯定要插件的,所以它的第一步就是安装插件,接着创建数据集,再创建报表模板,然后写的就是打印方法了,

一、 安装插件

水晶报表的打印它是要用插件才能实现的,我这里用的是CRforVS的这个插件,这里要非常注意非常注意的一点就是,安装它的时候千万别打开其它的窗口,因为其他的窗口会挤压它到显示的边上。我就试过一次是它跑到边上的,怎么拉它都出不来,而且还没安装完,最后只能重启。
在这里插入图片描述

安装完之后要检查一下是否安装成功,方法也很简单,在新建项那里找到Retorting,,点击它之后看到有Crystal Report这个东西,就说明安装成功了,当然你如果没有安装成功是看不到这个的。

在这里插入图片描述

二、 添加数据集

添加数据集就在区域里面单击右键直接添加新建项,在新建项里面找到数据集。数据集创建完成后,有两种方式添加表,1.用SQL语句添加,2.直接右键添加,然后自己命名。

如果数据的类型不一样怎么办,这里当然也可以改。设置了名称后,可以在属性的窗口里找到对应的数据类型然后对它进行更改,

在这里插入图片描述

添加了表就可以给他设置名称和字段,字段需要什么数据类型就给它设置就好了,表的结构和数据库的也是差不多的,上面的是表名下面内容是字段。

三、 报表模板

打印肯定是要一个模板的,那么就要做一个模板出来。

首先就新建一个模板出来,这个新建的模板就是刚才安装的插件,安装的然后新建它的。新建出来后,我们就可以对它进行设计了,你设计的是什么效果,它打印的模板就是什么效果,比如表格的边框字体的颜色等,都是要自己设计添加的,它还可以添加打印时间等特殊字段,这些都是可以通过单击鼠标右键来添加的。
在这里插入图片描述

但是它里面的字段是需要从左边拖过来的,不能自己打的,自己打的是没有效果的,拖的时候可以放在中间的详情资料的杠里面,这样可以快捷地生成表名和内容。

不过,它的字段在拖过来之前要把它和数据库绑定起来,不然就会没数据的。在这里我就发现了一个设计表格的框时的一个小技巧,因为表头和内容是隔开的,在画框的时候就会发现,你如果画了表头的下边框又画了内容的上边框的话,因为下面内容是复制的,所以打印出来就会发现上边框会有两条线,这样挺不美观的,解决方法就是不设置详情的上边框就可以了,这样利用上一行下边框充当下行的上边框,这样就完美地解决了不美观的问题啦!
在这里插入图片描述

第一步当然先实例化报表模板,它也是要实例化才能使用的

AchievementReport meiBan = new AchievementReport();//实例化报表模板

因为我们查询出来的数据是不能直接放入数据集里面的,这就需要把它们转化成DataTable这种表格的数据类型才能放入数据集里面,

1.  DataTable ubj =LINQToDataTable(listAchievements); 

然后就是实例化数据集

PrintReport.ReportDB ubBaobiao = new PrintReport.ReportDB();

接着将ubj的数据放入数据集的数据表里面,后面就以文件流的格式返回回去,

ubBaobiao.Tables["tbAchievement"].Merge(ubj); 

模板做好后,就要使用它,它的物理路径就要获取到,获取它是因为要把文件加载到模板里面。

string strRptPath =
System.Web.HttpContext.Current.Server.MapPath("~/") + "Areas\\ExaminationManagement\\PrintReport\\AchievementReport.rpt";  

把文件加载到报表模板,同时设置报表的数据源,这就是把报表和数据源关联起来了

meiBan.Load(strRptPath);
meiBan.SetDataSource(ubBaobiao);

最后把它转化为文件流,然后返回到视图里面去

Stream stream =
meiBan.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); 
  return File(stream, "application/pdf"); //返回

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值