水晶报表打印

水晶报表打印

开发工具与关键技术:VS、

作者:#33

撰写时间:撰写时间:2019年05月02日

在老师MVC教学中学习关于水晶报表打印的知识,自己再理清思路做了一遍。方法步骤:

01、安装水晶报表插件——02、项目引入安装的插件并创建空白报表模板——03、创建数据集——04、设置报表模板——05、控制器写查询方法——06、视图水晶报表打印方法(显示页面)

  1. 安装水晶报表插件:

02、项目引入安装的插件(1项目中创建新文件夹,2选择创建新建项—3选择Reporting项—4选择插件—5弹出层中选择创建空白报表模板):

03、创建数据集(在存放水晶报表插件的文件夹中,1选择创建添加类——2选择(数据)项——3选择(数据集)项)。

创建好数据集页面后,鼠标右键添加(TableAdapter)要打印的表的数据或者添加(DateTable)自定义表的数据(字段与数据库表字段要对应,包括数据类型)。

04、创建好数据集后,设置报表模板(在字段资源管理器的数据库字段(红色框)中鼠标右键点击数字专家——选择数据源点击(数据项目)——(ADO.NET数据集)添加表)。

添加数据表后,在数据库字段分别拖动需要打印的字段至Section3(详细资料)(绿色框)处,这样就可以获取打印的数据;报表空白区域鼠标右键会显示设置报表的各种功能(蓝色框),可以进行各种样式编辑。如:字体大小、背景颜色、添加文本框等。

05、控制器方法:查询出需要打印数据-——将listEmployee转化为DataTable类型数据——创建对象——将转换的数据放入数据集的数据表中(表名字需要与其对应否则无法获取打印的数据)-——实例化报表模板-——获取报表物理文件地址位置-——将数据加载到文件中——将创建的对象设置为报表数据源-——把ReportDocument转化为文件流-——最后return数据。

public ActionResult PrintEmployeeInfor(int employeeID) {

try{

//查询打印的数据

       var listEmployee = from tbEmployee in myModel.PW_Employee

                          select new{

tbEmployee.employeeID, tbEmployee.employeeName,

tbEmployee.employeeNum, tbEmployee.telphone,

tbEmployee.address

};

            if (employeeID>0) {

              listEmployee = listEmployee.Where(m => m.employeeID == employeeID);

}

   var listEmployees = listEmployee.OrderBy(m => m.employeeID).ToList();

//listEmployee转化为DataTable类型数据

   DataTable YG = LINQToDataTable(listEmployee);

   PrintReport.employeeDB DBReport = new PrintReport.employeeDB();//创建对象

   DBReport.Tables["PW_Employee"].Merge(YG); //YG的数据放入数据集的数据表中

   PrintEmployee PR = new PrintEmployee();//实例化报表模板

   //获取报表物理文件地址  (项目的文件夹位置)

   string strRptPath = System.Web.HttpContext.Current.Server.MapPath("~/") + "PrintReport\\PrintEmployee.rpt";

    PR.Load(strRptPath);//把报表文件加载到ReportDocument

PR.SetDataSource(DBReport); //设置报表数据源

Streamstream=PR.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); //把ReportDocument转化为文件流

     return File(stream, "application/pdf"); //返回

}

   catch (Exception) { return Json("", JsonRequestBehavior.AllowGet); }

 }

06、视图水晶报表打印方法(显示页面)和点击打印按钮后打印的数据(下图打印报表效果)

获取数据——判断是否为空——为空打印数据

function PrintEmployee() {

  var employeeID = $("#employeeID").val();//获取数据

  if (employeeID == "" || employeeID==null) //判断数据是否为空

{employeeID = 0; }//为空赋值为0

  if (employeeID == 0) // employeeID数据为0则打印数据

{window.open("PrintEmployeeInfor?employeeID=" + employeeID);}

}

猜你喜欢

转载自blog.csdn.net/weixin_44484621/article/details/89949635
今日推荐