RDLC 报表的制作(图文)

在 VS .NET2005 之前,SQL Server Reporting Services 中已经提供了一种被称为报表定义语言(Report Definition Language, RDL)的语言;在VS .NET 2005中,Microsoft 提供了针对这种报表的设计器,并提供了在WinForm和WebForm中使用这种报表的能力。Microsoft 将这种报表的后缀定为 RDLC,RDL 仍然是 Report Definition Language 的缩写,那么C代表什么呢?C代表 Client-side processing,凸显了它的客户端处理能力。

这种报表的易用性和可定制性让我们完全有理由放弃Crystal Report,让我们来看看它的强大功能吧:
     1、简单易用的控件,特别是Table控件,非常方便字段在报表上的排列
     2、灵活的可定制性,用XML来描述一个报表相关的一切
     3、高度可编程性,在你的项目中,甚至不需要有一个报表文件,通过代码就可以实现报表生成、预览和打印等一系列操作
     4、支持DrillThrough数据钻取功能
     5、导出的Excel文件格式非常完美,任何其它报表在这方面都不能与之比拟,而且并不需要安装Excel

下面就开始制作一张分组统计的简单报表:

  1. 打开 VS ,新建一个 WinForm 程序,添加一个新建项,选择报表
     RDLC 报表的制作(图文)_第1张图片 

  2. 报表是要数据绑定的,因此下一步添加数据源。可以通过添加“添加数据源”来通过数据库连接字符串链接到一个表或视图,不过也不必通过数据库来给dataset,取消弹出的“配置数据适配器”界面。打开 dataset 直接右键添加一个“table”
    RDLC 报表的制作(图文)_第2张图片

  3. 从报表设计页的“工具栏”上拖一个“表”到报表上。此表默认有三行,header、detail、footer,顾名思义:header 即是表头,detail 就是要显示的内容,footer为表尾,可以在这里进行一些统计信息。并且对表格进行相应的格式设计,加上表格边宽,字体居中等。把相应的数据字段绑定上去,直接把刚才建的 dataset 的字段拖进去,在序号列加入报表的一个函数“=RowNumber(Nothing)”,RDLC 中有许多函数可以用,右击某个单元格“属性”,在“value”中点“fx”会出现函数对话框。再加入统计行,打开报表,在 footer 行收入那列中键入“=Sum(Fields!income.Value)”即求和。再加入分组统计,点击表格,在左侧上右键“inert group”,插入一个分组,如下设置:
    RDLC 报表的制作(图文)_第3张图片

  4. 最后,报表的设计如下图:
     RDLC 报表的制作(图文)_第4张图片

  5. 随便建一个 Fomr 窗体,从工具栏上拖入“ReportViewer”控件,点击该控件右上方三角,选择刚刚建立的那张报表。
     RDLC 报表的制作(图文)_第5张图片

  6. 接着我们手动在后台写上数据绑定的代码,如下:
    复制代码
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Microsoft.Reporting.WinForms;
    
    namespace ReportView
    {
        public partial class FrmReportView : Form
        {
            public FrmReportView()
            {
                InitializeComponent();
            }
    
            private void FrmReportView_Load(object sender, EventArgs e)
            {
                DataTable dt = GetData();
    
                // DataSetFirst_DataTableFirst 必须与 RDLC 报表中为表格配置的数据源名称相同
                  ReportDataSource rds = new ReportDataSource("DataSetFirst_DataTableFirst", dt);
                reportViewer1.LocalReport.DataSources.Clear();
                reportViewer1.LocalReport.DataSources.Add(rds);
                reportViewer1.RefreshReport();
            }
    
            private DataTable GetData()
            {
                DataTable dt = new DataTable("dataname");
                dt.Columns.Add(new DataColumn("name", typeof(string)));
                dt.Columns.Add(new DataColumn("income", typeof(decimal)));
                dt.Columns.Add(new DataColumn("dept", typeof(string)));
    
                DataRow dr = dt.NewRow();
                dr["name"] = "张三";
                dr["income"] = 3300.00m;
                dr["dept"] = "人事";
                dt.Rows.Add(dr);
    
                dr = dt.NewRow();
                dr["name"] = "李四";
                dr["income"] = 3500.00m;
                dr["dept"] = "后勤";
                dt.Rows.Add(dr);
    
                dr = dt.NewRow();
                dr["name"] = "XJ";
                dr["income"] = 7500.00m;
                dr["dept"] = "技术";
                dt.Rows.Add(dr);
    
                dr = dt.NewRow();
                dr["name"] = "CSC";
                dr["income"] = 8500.00m;
                dr["dept"] = "技术";
                dt.Rows.Add(dr);
                return dt;
            }
        }
    }
    复制代码

  7. 现在直接运行能看见如下效果:
     

你可能感兴趣的:(RDLC 报表的制作(图文))