打印水晶报表
开发工具与关键技术:Visual Studio
作者:肖广斌
撰写时间:2019年5月4日
在新学的MVC课程中,在做项目的过程里有需要用到打印水晶报表的功能,那么在实现这个功能之前需要安装一个软件,就是跟水晶报表编程相关的软件,这个软件老师是给到我们的,所以我们简单安装一下就行了,下面我们就来实现一下这个功能
首先写的当然还是js部分,就是简单的提示跟请求的路径,接着我们需要在当前项目的区域下新建一个文件夹(PrintReport),在文件夹里新建项添加一个数据集,创建好之后,里面就是我们要编辑的数据源的位置,在设计数据源的时候,我们可以连接数据库进行设计,也可以直接在里面设计,这里因为我们要的数据在数据库里没有,所以我们自己需要自己设计表里面的字段以及字段里面的一些属性,里面有个属性是关键,就是DataType数据类型,我们要把字段的属性设置成对应的数据类型,因为我们要把数据库的数据打印到水晶报表里,否则后面就会报错。
接着我们新建项,就是上面文件夹中的AchievementReport.rpt的文件,创建完成后我们选择空白报表,就会有一个类似画板的东西,我们需要在这上面设计我们的报表,先打开左侧的字段资源管理器,把要设计的表添加进去,然后我们只需要设计报表头,页眉和报表尾,给它们添加内容就行了,设计完成后可以预览主报表的效果,这里我就不预览了,下面是我已经设计好的效果,见下表
设计完成报表后,我们就回到控制器部分写打印水晶报表的方法,先看一下控制器部分的代码
首先就是一连串的查询和筛选,查询出学生的信息、成绩等,接着就是几个打印水晶报表的操作步骤,这几个操作步骤其实都是固定的,我们不能调换顺序,否则就会报错,我试过了,所以不要调换这几个顺序,在打印的时候,这里有个方法需要调用,已经写好给我们了,就是下面这张图的方法,这个方法我也不是很清楚,只是知道把我们查出来的数据放到这个方法里,它就会以DataTable的格式返回给我们,其他的还需要自行探索,接下来就讲一下这几个操作步骤
这里我们先声明一个变量(daResult),接收我们上面查询出来并转换成DataTable格式的数据,就是将查询出来的数据转化为DataTable的格式。接下来就是操作的步骤了
1、实例化数据集,就是我们创建的PrintReport文件夹里的数据集。
2、接着将daResult放入数据集中名为“tbAchievement”的表格中,因为我们的数据集还是空的,没有数据,所以要把数据放进表格里。
3、实例化数据报表,跟我们实例化数据集是一样的。
4、获取报表的物理路径,通过 Server.MapPath获取到项目的根目录下ExaminationMangement区域下PrintReport文件夹里面AchievementReport文件的路径。
5、把报表加载到报表模板中,用Load这个方法把报表加载到报表模板中。
6、设置报表的数据源,把数据报表跟上面的数据集关联起来,通过SetDataSource()方法来设置报表的数据源,这样报表跟数据集就联系起来了,这时候报表是已经有数据的了。
7、再将报表以文件流的格式输出,ExportToStream()以文件流的格式输出,()里面是输出的格式,这里是让它以pdf的格式输出到页面,最后返回文件数据到页面。
这样整个打印水晶报表的过程就完成了!下面就是效果图