报表的打印

开发工具与关键技术: vs mvc
作者:
撰写时间:2019年3月28日

在使用计算机时,或多或少都需要打印一些内容出来,那么在我学习的这个项目中恰好有这个内容,写出来加深些记忆。
在项目中用到的一个插件叫水晶报表,首先是先安装好,才能进行下一步,如果安装好打开新建项会看到这样的一个图标
也建立个文件夹来装一些在建报时需要用到的一些文件,里面放了水晶报表的插件和一个需要用到的数据集。那么还得建个数据集,里面添加有两种方式,一种是从数据库里获取所需要的字段和ID,还有就是自己创建字段但属性需要注意要和数据库的数据类型相同。
在这里插入图片描述在这里插入图片描述
左边的表是自己创建字段的,右边的是从数据库里指定连接数据库所必需的连接字符串。
在自己建表中只需建其中的一种即可。第一张表中的属性的数据类型是需要自己去调一下的,因为创建时它默认的是string类型的。
下一个的步骤就是画报表的样式了,你会看到它给了一个模板,已经划分好了区域让你清楚在哪个地方建表头,哪个地方建页脚。
在这里插入图片描述
然后就要你对页面进行设置把宽高设置后就会增大一点,然后画线,画框,让其看起来有报表该有的模样。画好后的样子,图:
在这里插入图片描述
还有一个预览图:
在这里插入图片描述 那个空隙画了很久,就是不行(想吐槽),那么大体就是这样的一个效果,当然可以画的更美观,通过各种颜色搭配也能很好看。 表画好了也要回到控制器写方法,通过调用才能完成在项目页面的显示。 public ActionResult dayin(int AcademeID, int GradeID, int ClassID) { #region 数据查询 #endregion DataTable dt = LINQToDataTable(listAchiement);//将listResult转化为DataTable类型数据 PrintReport.ReportDB myDB = new PrintReport.ReportDB(); myDB.Tables[“tbAchievement”].Merge(dt); //将dt的数据放入数据集的数据表中 AchievementReport rp = new AchievementReport(); //实例化报表模板 string strRptPath = System.Web.HttpContext.Current.Server.MapPath("~/")+“Areas\ExaminationManagement\PrintReport\AchievementReport.rpt”; //获取报表物理文件地址 rp.Load(strRptPath); //把报表文件加载到ReportDocument rp.SetDataSource(myDB); //设置报表数据源 Stream stream = rp.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); //把ReportDocument转化为文件流 return File(stream, “application/pdf”); } 在数据查询里面还有大量的多表查询的代码,就不放出来了,这是控制器里调用报表的方法,在这里没有查询的代码其它的都写了相对应的注释,让大家能看得懂这代码是什么意思。 在HTML的页面也要有代表打印报表的按钮,以方便点击打印,给它起个函数,通过单击事件就能使用。 打印报表 这次的水晶报表就写到这,若有不对,请告知。 谢谢阅读。