C#制作RDLC报表

报表以前我只做过水晶报表,但是最近发现家里的VS上面居然没有水晶报表,发现水晶报表现在貌似已经不能完全免费的使用了,为了保险起见,就用了VS自带的RDLC报表,用完感觉其实也是够用的嘛~

建立一RDLC报表的过程主要是:

1、新建一个windows窗口,拖一个Reportview控件在上面,用来显示报表

2、新建一个类,构成数据源:

需要哪些字段,就在类中添加哪些,比如简单的如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace land_useowner_db
{
    class FarmerReportClass    //农户数据源
    {
        public string farmerBM { get;set; }
        public string farmerMC { get; set; }
        public string farmerLXDH { get; set; }
        public string farmerZJLX { get; set; }
        public string farmerZJHM { get; set; }
        public string farmerCBFDZ { get; set; }
        public string farmerYZBM { get; set; }
        public string farmerCBFCYSL { get; set; }
    }
}

数据源字段设置好后就要添加到数据库中:》

选择新建好的数据源类:  

数据源添加好了,接下来就是给数据源赋予值了

3、新建一个报表

查看代码:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Windows.Forms;
  9
 10 using System.Data.OleDb;
 11 using Microsoft.Reporting.WinForms;
 12
 13 namespace land_useowner_db.统计报表
 14 {
 15     public partial class FarmerReport : Form
 16     {
 17         string strCBFBM;
 18         string strCBFMC;
 19         string filepath;
 20         public FarmerReport(string CBFBM,string CBFMC,string path)
 21         {
 22             this.strCBFBM = CBFBM;
 23             this.strCBFMC = CBFMC;
 24             this.filepath = path;
 25             InitializeComponent();
 26         }
 27
 28         private void FarmerReport_Load(object sender, EventArgs e)
 29         {
 30             #region test
 31             //this.reportViewer1.LocalReport.ReportEmbeddedResource = "land_useowner_db.统计报表.Report1.rdlc";
 32             //Microsoft.Reporting.WinForms.ReportParameter rp = new Microsoft.Reporting.WinForms.ReportParameter("cbfbm", strCBFBM);
 33             //this.reportViewer1.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter[] { rp });
 34             //this.reportViewer1.RefreshReport();
 35
 36
 37             //为报表浏览器指定报表文件
 38
 39             //this.reportViewer1.LocalReport.ReportEmbeddedResource = "report.Report1.rdlc";
 40
 41             //指定数据集,数据集名称后为表,不是DataSet类型的数据集
 42             #endregion
 43 

 44             this.reportViewer1.LocalReport.DataSources.Clear();
 45             this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("land_useowner_db_FarmerReportClass", GetList()));
 46
 47             //显示报表
 48             this.reportViewer1.RefreshReport();
 49         }
 50
 51
 52         /// <summary>
 53         /// 获取打印的数据源(CBF表中)
 54         /// </summary>
 55         /// <returns></returns>
 56         private List<FarmerReportClass> GetList()
 57         {
 58
 59             //取得数据集
 60             string sql = "select * from CBF where CBFLX=‘1‘ ";
 61             sql += "and CBFBM= ‘" + strCBFBM + "‘";
 62             // 连接数据库
 63             OleDbConnection connct = new OleDbConnection();
 64             string oleDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath;
 65             connct.ConnectionString = oleDB;
 66             //创建命令
 67             OleDbCommand command = new OleDbCommand(sql, connct);
 68             //执行命令
 69             OleDbDataAdapter dataAdapter = new OleDbDataAdapter(command);
 70             DataTable table = new DataTable();
 71             try
 72             {
 73                 connct.Open();
 74                 dataAdapter.Fill(table);
 75
 76                 List<FarmerReportClass> list = new List<FarmerReportClass>();
 77                 FarmerReportClass stu = null;
 78                 foreach (DataRow row in table.Rows)
 79                 {
 80                     stu = new FarmerReportClass();
 81                     if (row.Table.Columns.Contains("CBFBM") && row["CBFBM"] != null && row["CBFBM"].ToString() != "")
 82                     {
 83                         stu.farmerBM = row["CBFBM"].ToString();
 84                     }
 85                     if (row.Table.Columns.Contains("CBFMC") && row["CBFMC"] != null && row["CBFMC"].ToString() != "")
 86                     {
 87                         stu.farmerMC = row["CBFMC"].ToString();
 88                     }
 89                     if (row.Table.Columns.Contains("LXDH") && row["LXDH"] != null && row["LXDH"].ToString() != "")
 90                     {
 91                         stu.farmerLXDH = row["LXDH"].ToString(); ;
 92                     }
 93                     if (row.Table.Columns.Contains("CBFZJLX") && row["CBFZJLX"] != null && row["CBFZJLX"].ToString() != "")
 94                     {
 95                         string zjlx = row["CBFZJLX"].ToString();
 96                         switch (zjlx)
 97                         {
 98                             case "1": zjlx = "居民身份证"; break;
 99                             case "2": zjlx = "军官证"; break;
100                             case "3": zjlx = "行政、企事业单位机构代码证或法人代码证"; break;
101                             case "4": zjlx = "户口簿"; break;
102                             case "5": zjlx = "护照"; break;
103                             case "9": zjlx = "其他证件"; break;
104                         }
105                         stu.farmerZJLX = zjlx;
106                     }
107                     if (row.Table.Columns.Contains("CBFZJHM") && row["CBFZJHM"] != null && row["CBFZJHM"].ToString() != "")
108                     {
109                         stu.farmerZJHM = row["CBFZJHM"].ToString(); ;
110                     }
111                     if (row.Table.Columns.Contains("CBFDZ") && row["CBFDZ"] != null && row["CBFDZ"].ToString() != "")
112                     {
113                         stu.farmerCBFDZ = row["CBFDZ"].ToString(); ;
114                     }
115                     if (row.Table.Columns.Contains("YZBM") && row["YZBM"] != null && row["YZBM"].ToString() != "")
116                     {
117                         stu.farmerYZBM= row["YZBM"].ToString(); ;
118                     }
119                     if (row.Table.Columns.Contains("CBFCYSL") && row["CBFCYSL"] != null && row["CBFCYSL"].ToString() != "")
120                     {
121                         stu.farmerCBFCYSL = row["CBFCYSL"].ToString(); ;
122                     }
123                     list.Add(stu);
124                 }
125                 return list;
126             }
127             finally
128             {
129                 connct.Close();
130                 command.Dispose();
131                 connct.Dispose();
132             }
133
134         }

4、在新建好的报表中就可以通过拖动相应的控件等来设计报表,简单的说就是画报表,安装需求画好相应的报表内容,比如:

时间: 11-29

C#制作RDLC报表的相关文章

Asp.net中动态控制RDLC报表 自定义RDLC

转载自: http://dlwang2002.cnblogs.com/archive/2006/05/27/410499.html 在asp.net程序中,可以选择使用水晶报表,功能确实强大.但是web版的水晶报表好像存在版权的问题.如果所作报表不是复杂的一塌糊涂的话,可以使用微软自带的Rdlc报表.已经有老兄做出了不少诠释:http://www.cnblogs.com/waxdoll/更多资料可以在这里找到:http://www.gotreportviewer.com/Rdlc优点:1:Rdl

利用General框架开发RDLC报表

RDLC是微软推出的自家的报表软件,虽然没有一些第三方的报表软件强大好用,但是作为VisualStudio集成的报表工具,在客户要求不高的情况下还是非常值得一用的,本文将介绍通过General代码生成器和General框架快速的开发一个报表程序. 第一步.生成RDLC报表文件 传统的开发方式是通过VisualStudio创建RDLC报表文件,但这种方式效率很慢,不适合大量报表开发,而通过General代码生成器可以快速的大量生成报表格式,大大提高开发效率,并且生成的报表文件可以在VisualSt

RDLC报表钻取空白页问题

在修改报表查询条件时,钻取页突然空白了,百思不得其解,之前好好的,研究了一个下午和一个晚上,查资料等等,网上很多资料都是设置报表的 ConsumeConteinerWhitespace = True 以及设置BODY的大小不能大于报表的SIZE,问同事,说是报表参数过多,正准备修改成一个参数,但是在删除参数时,想到之前刚做钻取时,因为参数不对所以显示不出来,设置了允许空和允许NULL,才显示出来数据,一查,有个新增参数果然没设,设了之后立即显示出来了,大意了,这种小问题,特记下来,以后认真对待问

vs 2015 rdlc报表绑定datagridview中的数据

这几天一直想要实现rdlc报表绑定datagridview中的数据,始终在虚拟表向rdlc报表绑定这一步上出错.今天从下午4点到七点四十一直在尝试.最终还是实现了,最然并不知所以然,这个问题还是以后在考虑吧,目前的项目要紧. 首先是  datagridview中的数据传到虚拟表中. for (int i = 0; i < dgvscan.Columns.Count - 1; i++) { dtout.Columns.Add(dgvscan.Columns[i].Name); } //添加行 fo

RDLC报表之动态生成报表

首先,必须感谢和致敬蜡人张前辈: http://waxdoll.cnblogs.com/archive/2006/02/25/337713.html 2.微软GotReportViewer官方的案例: http://www.gotreportviewer.com/(约有20来个,很详细.有时候会上不了) ) 前段时间,做了RDLC报表,主要是三块功能: 1.从DataGrid提取数据,然后创建对应的RDLC报表文件,以利用ReportViewer类的打印排版的功能(其中做了个提取数据的通用函数,

DevExpress的XtraReport和微软RDLC报表的使用和对比

原文:DevExpress的XtraReport和微软RDLC报表的使用和对比 我们开发程序的时候,经常会碰到一些报表,如果是Winform的报表,一般可以采用DevExpress控件组的XtraReport,或者微软的RDLC报表,当然还有一些其他的,在此不再赘述.由于本人在Winform开发中经常使用到一些报表,有时候使用XtraReport报表,有时候也使用RDLC报表,因此本篇主要介绍这两种不同类型报表的使用,以及对比它们的差异性,以便我们更好的掌握了解. 1.XtraReport报表的

mvc 在view视图中直接输出rdlc报表文件(Excel、PDF、Word)

给一段代码做参考 public ActionResult RdlcReport(string code) { LocalReport localReport = new LocalReport(); EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo(); err.IsError = false; try { var report = _reportAppService.GetReport(code, 0, false); DataTa

在mvc视图中实现rdlc报表展示

需求:在view视图页面中嵌入rdlc报表,rdlc的xml为动态传入的xml字符串.本项目是基于abp框架 可能出现问题: 1.rdlc报表是由asp.net的服务器控件ReportViewer来支持的,view视图不能直接使用服务器控件 2.ReportViewer需要通过aspx页面来承载,并在服务端事件中完成对控件的xml绑定.datatable绑定 3.由于是基于abp框架的项目,不能在aspx.cs后台页面中直接实例化IxxAppService接口的实现类 想达到的效果如下图: 上部

基于MVC+EasyUI的Web开发框架经验总结(15)--在MVC项目中使用RDLC报表

RDLC是一个不错的报表,有着比较不错的设计模式和展现效果,在我的Winform开发里面,使用RDLC也是一个比较方便操作,如可以参考文章<DevExpress的XtraReport和微软RDLC报表的使用和对比>或者<会员管理系统的设计和开发(2)-- RDLC报表的设计及动态加载>进行了解.但是基于MVC方式,如何构建和展现RDLC报表呢?本文主要介绍如何在基于MVC4+EasyUI的Web开发框架上进行RDLC的集成和使用. 1.RDLC绑定数据源 RDLC的报表设计,是使用