C# MVC 打印水晶报表

首先要将打印的数据查询出来,根据联表查询出详细的信息,再通过具体的条件筛选出需要的数据,然后将筛选出来的数据转化为dataTable 格式
C# MVC 打印水晶报表
dtResult:声明的变量的名称 listGreenGift:筛选出来的数据
LINQToDataTable 另外写的一个转化方法,解释在后面,数据转化为dataTable之后,新建一个数据集,在自己所需要的文件夹中添加数据集,鼠标右键打开新建项,然后,点击左边选项数据,再点击数据集,设置对应数据集的名称,打开数据集然后创建表名,根据筛选数据的列,对应的字段的名称进行排列,主要是要将对应的数据,设置对应的数据类型,
C# MVC 打印水晶报表
在对应的表中选中对应的数据列进行设置属性,点击属性弹出左边的框,根据对应的数据设置对影的数据类型,创建完成之后,实例化数据集,
C# MVC 打印水晶报表
实例化完成之后将dtResult放入数据集中名为“tbGreenGift”的表格中,再再下一步,到对应的文件夹中新建水晶报表,新建成功之后,选择空白页,然后打开字段管理器,再点击数据库字段,再右键打开数据库专家,再点击项目数据,把在数据集中创建的数据选中然后点击确定就可以了,来到编辑页面,打开数据库专家,选中表中的具体字段,拖放到详细资料中,这样数据就会分布到对应的列中,然后根据自己的喜好设置对应的样式,在对应的地方设置。把水晶报表的样式设置完成之后,实例化水晶报表,然后获取报表的物理路径
C# MVC 打印水晶报表
然后将报表加载到报表模板中,再设置表的数据源,最后将报表转化为文件流输出,最最后返回pdf格式的文件。就这样水晶报表基本完成了。

转换方法:方法首先要定义要返回的DataTable对象,然后保存列集合的属性数组,再进行安全性检查,判断varlist 是否等于空,等于空直接返回,循环遍历集合,使用反射获取类型的属性信息,再使用反射获取T类型的属性信息,返回一个PropertyInfo类型的集合,再判断oProps是否等于空,如果为空继续执行下去,在foreach循环遍历PropertyInfo数组,再判断得到的数据类型是否为泛型,如果是,则获取泛型类型的参数,然后将类型的属性名称与属性类型作为DataTable的列数据,下一步新建一个用于添加到DataTable中的DataRow对象,再循环遍历属性集合为DataRow中指定列赋值赋值,将具有结果值的DataRow添加到DataTable集合中,最后返回DataTable对象,代码如下:
C# MVC 打印水晶报表