在 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 程序,添加一个新建项,选择报表
     
  2. 报表是要数据绑定的,因此下一步添加数据源。可以通过添加“添加数据源”来通过数据库连接字符串链接到一个表或视图,不过也不必通过数据库来给dataset,取消弹出的“配置数据适配器”界面。打开 dataset 直接右键添加一个“table”
  3. 从报表设计页的“工具栏”上拖一个“表”到报表上。此表默认有三行,header、detail、footer,顾名思义:header 即是表头,detail 就是要显示的内容,footer为表尾,可以在这里进行一些统计信息。并且对表格进行相应的格式设计,加上表格边宽,字体居中等。把相应的数据字段绑定上去,直接把刚才建的 dataset 的字段拖进去,在序号列加入报表的一个函数“=RowNumber(Nothing)”,RDLC 中有许多函数可以用,右击某个单元格“属性”,在“value”中点“fx”会出现函数对话框。再加入统计行,打开报表,在 footer 行收入那列中键入“=Sum(Fields!income.Value)”即求和。再加入分组统计,点击表格,在左侧上右键“inert group”,插入一个分组,如下设置:
  4. 最后,报表的设计如下图:
     
  5. 随便建一个 Fomr 窗体,从工具栏上拖入“ReportViewer”控件,点击该控件右上方三角,选择刚刚建立的那张报表。
     
  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 报表的制作(图文)相关推荐

  1. rdlc报表的制作步骤

    1. 新建报表文件(rdlc) 2. 配置数据源 a)         不用数据源,只用传参数的方式.(参见示例) b)        在数据源中添加新的数据源(数据库,web服务以及对象) c)   ...

  2. Rdlc报表纵向与横向打印问题

    问题:在制作RDLC报表时,会出现明明预览是横向方式的,但是打印出来是纵向的. 例如:21.4*13.9 设置了此格式,但是打印出来是反向的. 解决方案: 1. InteractiveSize:21. ...

  3. Asp.net MVC开发RDLC报表

    主要步骤如下: 创建Asp.net MVC项目 创建DataSet数据源 创建和设计RDLC报表 创建Model 创建Controller 设计报表引用页面 运行浏览报表  详细图解: 1. 创建&q ...

  4. ASP.NET MVC应用程序展示RDLC报表

    ASP.NET MVC应用程序展示RDLC报表 原文:ASP.NET MVC应用程序展示RDLC报表 学习ASP.NET MVC这样久,在学习,练习与应用过程中,觉得很多知识与以前的ASP.NET多有 ...

  5. [转]RDLC报表-参数传递及主从报表

    本文转自:http://www.cnblogs.com/yjmyzz/archive/2011/09/19/2180940.html 今天继续学习RDLC报表的"参数传递"及&qu ...

  6. 分享懒人张RDLC报表(四)

    来自懒人张:RDLC报表(四)         RDLC报表中有一个概念叫数据区域(Data Region),数据区域是数据绑定的报表项目,在数据区域中可以显示来自数据集的多行数据.RDLC报表设计器 ...

  7. 关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出”...

    问题:关闭rdlc报表打印预览后,关闭客户端,抛出异常"发生了应用程序级的异常 将退出" 办法:在容纳ReportViewer的窗体后台代码中,添加如下代码即可 protected ...

  8. WinFormreportViewer(rdlc)报表[列表]的使用(一)(附源码示例) 之配餐系统的开发

    紧接着"WinForm"reportViewer报表[矩阵]的使用(一)(附源码示例)" 之配餐系统的开发"这篇文章,此文与大家分享的是在 配餐系统的开发 中使 ...

  9. C# rdlc 报表学习总结

    C# 创建报表过程详解 http://www.jb51.net/article/68481.htm 本文给大家介绍的是使用vs2012 c#创建报表的全部过程的记录,十分的详细,有需要的小伙伴可以参考 ...

最新文章

  1. java g1 gc ref proc_java – 针对sparc T4 8核的正确G1 GC调优
  2. Pandas/networkx图分析简单入门
  3. Mysql Select 语句中实现的判断
  4. java好还是python好-学Python 好还是java 好?
  5. extjs gridpanel滚动条问题显示数据不完整
  6. Java_IO流_抽象类
  7. find函数matlab_Matlab 数值数据
  8. 数据结构实验之图论四:迷宫探索_用图机器学习探索 A 股个股相关性变化
  9. cookie 在线人数列表_前端学习随笔2 在线简历
  10. android怎样判断插入数据是否成功_MySQL一个表的自增id用完了,背井大佬让我用这些姿势再往里插数据...
  11. catia利用宏批量改名的方法_谁有CATIA批量改名的宏程序啊
  12. 003.ASP.NET MVC集中管理Session
  13. duilib介绍-1
  14. android 毫秒 计时器,Android 计时器: CountDownTimer和JobService
  15. 分布式与集群的区别,一致性hash,hadoop与HBASE,消息,关于分布式系统的数据一致性问题(来自公众号:360doc个人图书馆)
  16. intent传递集合数据
  17. 误删除文件怎么找回呢?
  18. 如何把大写金额变为小写数字_excel怎么把小写数字转换成人民币大写?
  19. TP5 页面跳转与重定向
  20. 【笔记】autoCAD无法显示文字解决方案

热门文章

  1. 2016物联网大趋势搞不懂?别担心,CES为你指点迷津
  2. Apache Shiro java安全框架
  3. 导致Oracle性能抖动的参数提醒
  4. 汇编语言的简答入门--斐波那契数列(递归)
  5. LaTeX 目录中显示“参考文献”条目
  6. [Linux学习]man page常用按键
  7. CentOS上 安装NodeJS
  8. QUIC - 低时延互联网传输层协议
  9. JavaScript-打开新窗口(window.open)
  10. 【熊猫站群系统@苹果cmsv10/Maccmsv10 站群深度定制版 开发日志】 优雅且高效的友链模块,一键打造强大的蜘蛛池