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、新建一个报表

查看代码:
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 System.Data.OleDb;
using Microsoft.Reporting.WinForms; namespace land_useowner_db.统计报表
{
public partial class FarmerReport : Form
{
string strCBFBM;
string strCBFMC;
string filepath;
public FarmerReport(string CBFBM,string CBFMC,string path)
{
this.strCBFBM = CBFBM;
this.strCBFMC = CBFMC;
this.filepath = path;
InitializeComponent();
} private void FarmerReport_Load(object sender, EventArgs e)
{
#region test
//this.reportViewer1.LocalReport.ReportEmbeddedResource = "land_useowner_db.统计报表.Report1.rdlc";
//Microsoft.Reporting.WinForms.ReportParameter rp = new Microsoft.Reporting.WinForms.ReportParameter("cbfbm", strCBFBM);
//this.reportViewer1.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter[] { rp });
//this.reportViewer1.RefreshReport(); //为报表浏览器指定报表文件 //this.reportViewer1.LocalReport.ReportEmbeddedResource = "report.Report1.rdlc"; //指定数据集,数据集名称后为表,不是DataSet类型的数据集
#endregion this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("land_useowner_db_FarmerReportClass", GetList())); //显示报表
this.reportViewer1.RefreshReport();
} /// <summary>
/// 获取打印的数据源(CBF表中)
/// </summary>
/// <returns></returns>
private List<FarmerReportClass> GetList()
{ //取得数据集
string sql = "select * from CBF where CBFLX='1' ";
sql += "and CBFBM= '" + strCBFBM + "'";
// 连接数据库
OleDbConnection connct = new OleDbConnection();
string oleDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath;
connct.ConnectionString = oleDB;
//创建命令
OleDbCommand command = new OleDbCommand(sql, connct);
//执行命令
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(command);
DataTable table = new DataTable();
try
{
connct.Open();
dataAdapter.Fill(table); List<FarmerReportClass> list = new List<FarmerReportClass>();
FarmerReportClass stu = null;
foreach (DataRow row in table.Rows)
{
stu = new FarmerReportClass();
if (row.Table.Columns.Contains("CBFBM") && row["CBFBM"] != null && row["CBFBM"].ToString() != "")
{
stu.farmerBM = row["CBFBM"].ToString();
}
if (row.Table.Columns.Contains("CBFMC") && row["CBFMC"] != null && row["CBFMC"].ToString() != "")
{
stu.farmerMC = row["CBFMC"].ToString();
}
if (row.Table.Columns.Contains("LXDH") && row["LXDH"] != null && row["LXDH"].ToString() != "")
{
stu.farmerLXDH = row["LXDH"].ToString(); ;
}
if (row.Table.Columns.Contains("CBFZJLX") && row["CBFZJLX"] != null && row["CBFZJLX"].ToString() != "")
{
string zjlx = row["CBFZJLX"].ToString();
switch (zjlx)
{
case "": zjlx = "居民身份证"; break;
case "": zjlx = "军官证"; break;
case "": zjlx = "行政、企事业单位机构代码证或法人代码证"; break;
case "": zjlx = "户口簿"; break;
case "": zjlx = "护照"; break;
case "": zjlx = "其他证件"; break;
}
stu.farmerZJLX = zjlx;
}
if (row.Table.Columns.Contains("CBFZJHM") && row["CBFZJHM"] != null && row["CBFZJHM"].ToString() != "")
{
stu.farmerZJHM = row["CBFZJHM"].ToString(); ;
}
if (row.Table.Columns.Contains("CBFDZ") && row["CBFDZ"] != null && row["CBFDZ"].ToString() != "")
{
stu.farmerCBFDZ = row["CBFDZ"].ToString(); ;
}
if (row.Table.Columns.Contains("YZBM") && row["YZBM"] != null && row["YZBM"].ToString() != "")
{
stu.farmerYZBM= row["YZBM"].ToString(); ;
}
if (row.Table.Columns.Contains("CBFCYSL") && row["CBFCYSL"] != null && row["CBFCYSL"].ToString() != "")
{
stu.farmerCBFCYSL = row["CBFCYSL"].ToString(); ;
}
list.Add(stu);
}
return list;
}
finally
{
connct.Close();
command.Dispose();
connct.Dispose();
} }
4、在新建好的报表中就可以通过拖动相应的控件等来设计报表,简单的说就是画报表,安装需求画好相应的报表内容,比如:

C#制作RDLC报表的更多相关文章
- 微软RDLC报表打印
关于微软RDLC报表打印时文字拉伸问题(Windows server 2003 sp2) 最近我们开发的打印服务频频出现打印文字拉伸问题,客户意见络绎不绝,最为明显的是使用黑体加粗后 “2.0份” 打 ...
- RDLC报表学习
RDLC报表由以下三部分构成: 1.制作自己的DateSet集合(就是报表的数据集): 2.制作自己的报表文件.rdlc文件,用于画做报表样式,里面有微软自带的导出和打印功能,其实就为了少做这2个功能 ...
- 利用General框架开发RDLC报表
RDLC是微软推出的自家的报表软件,虽然没有一些第三方的报表软件强大好用,但是作为VisualStudio集成的报表工具,在客户要求不高的情况下还是非常值得一用的,本文将介绍通过General代码生成 ...
- RDLC报表总结
这2天纠结的报表基本上已近完成大部分功能.现在总结一下自己近期的学习成果 首先制作微软RDLC报表由以下三部分构成:1.制作自己的DateSet集合(就是报表的数据集):2.制作自己的报表文件.rdl ...
- [转]RDLC报表格式化format表达式
本文转自:http://www.cnblogs.com/samlin/archive/2012/04/17/FormatDateTime.html 刚开始接触RDLC报表,觉得RDLC报表提供的格式化 ...
- 关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出”
问题:关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出” 办法:在容纳ReportViewer的窗体后台代码中,添加如下代码即可 protected override ...
- rdlc报表DEMO
rdlc报表demo .net 4.0 vs2013 文本框,图像控件,checkbox样式的打印 下载链接
- rdlc报表大小设置
参考:http://stackoverflow.com/questions/427730/how-to-limit-rdlc-report-for-one-page-in-a-pdf 主要设置为:报表 ...
- 基于MVC4+EasyUI的Web开发框架经验总结(15)--在MVC项目中使用RDLC报表
RDLC是一个不错的报表,有着比较不错的设计模式和展现效果,在我的Winform开发里面,使用RDLC也是一个比较方便操作,如可以参考文章<DevExpress的XtraReport和微软RDL ...
随机推荐
- [译]C++, Java和C#的编译过程解析
1.1.1 摘要 我们知道计算机不能直接理解高级语言,它只能理解机器语言,所以我们必须要把高级语言翻译成机器语言,这样计算机才能执行高级语言编写的程序,在接下来的博文中,我们将介绍非托管和托管语音的编 ...
- Git学习笔记(3)——撤销修改和文件的删除
本文主要记录了git中,错误的撤销和文件的删除. 撤销修改 这里有3中情况 改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file. 不但改乱了工作区某个 ...
- 浏览器 的 session 如何保持?!
http://qindingsky.blog.163.com/blog/static/3122336200832853116360/ 在谈论session机制的时候,常常听到这样一种误解“只要关闭浏览 ...
- swift 创建单例模式
一.意图 保证一个类公有一个实例,并提供一个访问它的全局访问点. 二.使用场景 1.使用场景 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时 当这个唯一实例应该是通过子类化可扩展的,并且 ...
- Java对象序列化---转载
1.概念 序列化:把Java对象转换为字节序列的过程. 反序列化:把字节序列恢复为Java对象的过程. 2.用途 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个 ...
- 带你走近AngularJS - 创建自定义指令
带你走近AngularJS系列: 带你走近AngularJS - 基本功能介绍 带你走近AngularJS - 体验指令实例 带你走近AngularJS - 创建自定义指令 ------------- ...
- 容器使用的12条军规——《Effective+STL中文版》试读
容器使用的12条军规——<Effective+STL中文版>试读 还 记的自己早年在学校学习c++的时候,老师根本就没有讲STL,导致了自己后来跟人说 起会C++的时候总是被鄙视, ...
- JS的prototype和__proto__ Constructor
一.prototype和__proto__的概念 prototype是 注意是 只有函数的一个属性才有的(每个函数都有一个prototype属性),这个属性是一个指针,指向一个普通对象并且不是原型对象 ...
- mysql-5.7.17-winx64免安装版,win10环境下安装配置
下载地址:http://dev.mysql.com/downloads/file/?id=467269 1.解压到自定义目录:我解压到了D盘的根目录 2.复制my-default.ini 重命名 my ...
- ASP.NET MVC的Action拦截器(过滤器)ActionFilter
有时项目要进行客户端请求(action)进行拦截(过滤)验证等业务,可以使用拦截器进行实现,所谓的action拦截器也没有什么的,只是写一个类,继承另一个类(System.Web.Mvc.Filter ...