水晶报表打印

在我们考试之后都会发下一个成绩排名单,上面记录着每个考生的姓名、成绩等数据,考试一般都是笔试考试,所以录入数据所用到的都是Excel,这是一般学校常用的。而现在网上考试兴起,所上传的考试成绩都是自动记录在学院系统内,而学院系统内也有一个打印的功能,那就是打印水晶报表。
虽然这不是唯一的打印手段(还可以在系统内导出Excel数据,然后再用Excel打印出报表),但毕竟“韩信点兵–多多益善”嘛。
要打印水晶报表首先要下载一个水晶报表插件,插件名字已经在下面:
编程软件——CRforVS_13_0_14(表示上传文件还不知道怎么操作,名字代替)
安装完成之后在项目中添加三个水晶报表的引用:
在这里插入图片描述
这些操作完成之后便创建一个水晶报表模板,模板创建完成之后便是代码操作了:
之前说过,项目中显示数据的样式也是以表格形式呈现的,所以它的数据也是通过在数据库中查询出的,那我们打印水晶报表要打印哪些数据便可以直接查询出所要打印的数据即可。
查询,在项目中查询事先已经有了下拉框查询,选择到某个学院,某个班级等,但在这里我所查询的是每个学生最高成绩表,所以开始要查询的是筛选出的学生的最高成绩,然后查询出他们的字段并排列,最后将数据通过水晶报表将他们打印出来。
一、 查询
在这里插入图片描述
在写代码之前一般都会写一个try…catch()来捕捉错误,如果在代码执行过程中出现错误将Return Json返回一个空的数据。
水晶报表打印_第1张图片
首先将学生的所有成绩通过成绩的ID进行排序,查询出将每个学生所考成绩按倒叙排序获取到的第一条成绩的ID(成绩顺序是按从小到大排列,倒叙则将最高成绩指定)、第一条数据的成绩和最高成绩所对应的合格类型,然后将查询的值赋值给一个变量。
在这里插入图片描述
再通过连表查询出这个变量中每个学生的考生信息(变量包含所有最高成绩的学生数据),并将值赋值给一个变量,判传参是否有值(为什么传参之前讲过这里便不再赘述),有值则该学生存在,并同时将所查询到的所对应的ID为相等(学院ID,年级ID,班级ID)。
在这里插入图片描述
创建一个变量,将获取到学生信息的变量里面的数据按成绩排序并返回一给ToList(),所获取到的值便是需要打印的每个学生最高成绩资料。

二、 打印
在这里插入图片描述
凡是对数据进行操作前都是需要对数据处理后才能进行操作。先将获取到最终数据的变量的数据类型转换成DataTable类型的数据。
在这里插入图片描述
实例化创建一个数据集,然后将该数据放入数据集的数据表中(就是创建水晶报表所用到的数据集,水晶报表内的每一个数据字段都是从数据表上获取到的),接下来需要实例化水晶报表的模板并获取到存放水晶报表的路径,用MapPath()方法返回指定Web服务器上指定的虚拟路径所对应的物理路径。
在这里插入图片描述
把报表文件加载到存放该水晶报表的物理路径中,将报表的数据原设置为之前存放数据的数据集,然后将报表转换成文档流的形式用一个Stream类型的变量存放(Stream是提供字节序列的一般视图)。
在这里插入图片描述
最后用return File将该变量以pdf格式返回

你可能感兴趣的:(技术分享)