打印水晶报表

想要制作水晶报表
首先我们要安装这个插件
在这里插入图片描述
安装完成之后,我们新建一个文件夹,然后再到这个文件夹里添加,找到新建项,然后在找到下面这个插件完成添加
在这里插入图片描述
然后在到那个文件夹里面找到新建项,找到数据,在添加一个数据集
在这里插入图片描述
然后在数据集中添加个 datatable 到datatable里面添加你所需要的数据
在这里插入图片描述
然后就可以直接制作水晶报表了
在这里插入图片描述

制作好水晶报表模板号就可以到控制器中写方法了,以下是引用老师的方法

public  ActionResult PrintAchievment(int AcademeID, int GradeID, int ClassID)
        {
            #region 数据查询
            var TbAchievment = from tbAchievement in myModel.PW_Achievement
                               group tbAchievement by tbAchievement.UserID into tbStudent
                               select new
                               {
                                   UserID = tbStudent.Key,
                                   AchievementID = tbStudent.OrderByDescending(M => M.Achievement).FirstOrDefault().AchievementID,
                                   Achievement = tbStudent.OrderByDescending(m => m.Achievement).FirstOrDefault().Achievement,
                                   EligibleTypeID = tbStudent.OrderByDescending(m => m.Achievement).FirstOrDefault().EligibleTypeID,
                                   ExamNumber = tbStudent.OrderByDescending(m => m.ExamNumber).FirstOrDefault().ExamNumber,
                               };
            var listAchiement = (from tbAchiement in TbAchievment
                                 join tbEligibleType in myModel.SYS_EligibleType on tbAchiement.EligibleTypeID equals tbEligibleType.EligibleTypeID
                                 join tbStudent in myModel.PW_Student on tbAchiement.UserID equals tbStudent.UserID
                                 join tbAcademe in myModel.SYS_Academe on tbStudent.AcademeID equals tbAcademe.AcademeID
                                 join tbGrade in myModel.SYS_Grade on tbStudent.GradeID equals tbGrade.GradeID
                                 join tbClass in myModel.SYS_Class on tbStudent.ClassID equals tbClass.ClassID
                                 select new AchievementInfor
                                 {
                                     StudentName = tbStudent.StudentName,
                                     StudentNumber = tbStudent.StudentNumber,
                                     StudentSex = tbStudent.StudentSex,
                                     ClassName = tbClass.ClassName,
                                     ExamNumber = tbAchiement.ExamNumber,
                                     Achievement = tbAchiement.Achievement,
                                     EligibleTypeName = tbEligibleType.EligibleTypeName,
                                     AcademeID = tbAcademe.AcademeID,
                                     GradeID = tbGrade.GradeID,
                                     ClassID = tbClass.ClassID,
                                 }).ToList();
            if (AcademeID > 0)
            {
                listAchiement = listAchiement.Where(m => m.AcademeID == AcademeID).ToList();
            }
            if (GradeID > 0)
            {
                listAchiement = listAchiement.Where(m => m.GradeID == GradeID).ToList();
            }
            if (ClassID > 0)
            {
                listAchiement = listAchiement.Where(m => m.ClassID == ClassID).ToList();
            }
            #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 = rp.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); 
                                                                                 //把ReportDocument转化为文件流
            return File(stream, "application/pdf");
        }

首先是查询了我们要打印的数据,然后将listresult转化为datatable类型数据,
然后将dt的数据放入数据集的数据表中,
然后在实例化报表模板,在获取报表的物理路径,把报表加载到reportdocument,
设置数据源,再把ReportDocment转化为文件流。
这样就打印水晶报表就完成了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值