微软的RDLC报表设计小例

  最近正在做微软的RDLC报表(即ReportView),把自己的经验写了来,网络上有个叫 蜡人张的博客介绍的还不错,下面开始做一张分组统计的简单报表吧~

298363475313801707.jpg

(最终图)

   一、先建一张报表:

5150429123852152153.jpg

二、设计dataset

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

2294302535169039465.jpg

然后手动加上需要的数据字段,如 name(姓名)、income(收入)、dept(部门),income的datetype为decimal。其实dataset就是一个数据外壳罢了。

三、设计报表

    从“工具栏”上拖一个“表”到报表上。此表默认有三行,header、detail、footer,顾名思义:header即是表头,detail就是要显示的内容,footer为表尾,可以在这里进行一些统计信息。并且对表格进行相应的格式设计,加上表格边宽,字体居中等,如图

2265592087544545088.jpg

下面的工作就是把相应的数据字段帮顶上去,看到上图的左边“website data sources”了,直接把刚才建的dataset的字段拖进去,在序号列加入报表的一个函数“=RowNumber(Nothing)”,RDLC中有许多函数可以用,右击某个单元格“属性”,在“value”中点“fx”会出现函数对话框。设计成如下图:

4284049145536476538.jpg

四、设计页面

    随便建一个aspx页面,从工具栏上拖入“reportviewer”控件,点击其右上方三角,选择刚刚建立的那张报表。这是页面上会多出一个ObjectDataSource1控件是用来获取数据的,我们手动赋值,所以就不用了,删除它。

 2319916758049557396.jpg

接下来就是手动绑定数据源,具体参照以下代码:

None.gif using  System;
None.gif
using  System.Data;
None.gif
using  System.Configuration;
None.gif
using  System.Web;
None.gif
using  System.Web.Security;
None.gif
using  System.Web.UI;
None.gif
using  System.Web.UI.WebControls;
None.gif
using  System.Web.UI.WebControls.WebParts;
None.gif
using  System.Web.UI.HtmlControls;
None.gif
using  Microsoft.Reporting.WebForms;
None.gif
None.gif
public   partial   class  _Default : System.Web.UI.Page 
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
protected void Page_Load(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        DataTable dt 
= GetData();
InBlock.gif
InBlock.gif        ReportDataSource rds 
= new ReportDataSource("DataSet1_DataTable1", dt);
InBlock.gif        ReportViewer1.LocalReport.DataSources.Clear();
InBlock.gif        ReportViewer1.LocalReport.DataSources.Add(rds);
InBlock.gif        ReportViewer1.LocalReport.Refresh();
ExpandedSubBlockEnd.gif    }

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
///   模拟数据
InBlock.gif    
/// </summary>
ExpandedSubBlockEnd.gif    
/// <returns></returns>

ExpandedSubBlockStart.gifContractedSubBlock.gif    private DataTable GetData() dot.gif{
InBlock.gif        DataTable dt 
= new DataTable("dataname");
InBlock.gif        dt.Columns.Add(
new DataColumn("Name"typeof(string)));
InBlock.gif        dt.Columns.Add(
new DataColumn("Income"typeof(decimal)));
InBlock.gif        dt.Columns.Add(
new DataColumn("Dept"typeof(string)));
InBlock.gif
InBlock.gif        DataRow row 
= dt.NewRow();
InBlock.gif        row[
"Name"= "张三";
InBlock.gif        row[
"Income"= 1000.00m;
InBlock.gif        row[
"Dept"= "人事部门";
InBlock.gif        dt.Rows.Add(row);
InBlock.gif
InBlock.gif        row 
= dt.NewRow();
InBlock.gif        row[
"Name"= "李四";
InBlock.gif        row[
"Income"= 1200.00m;
InBlock.gif        row[
"Dept"= "人事部门";
InBlock.gif        dt.Rows.Add(row);
InBlock.gif
InBlock.gif        row 
= dt.NewRow();
InBlock.gif        row[
"Name"= "王五";
InBlock.gif        row[
"Income"= 2000.00m;
InBlock.gif        row[
"Dept"= "技术部门";
InBlock.gif        dt.Rows.Add(row);
InBlock.gif
InBlock.gif        
return dt;
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
None.gif


值得注意的是:我上面红色标出的ReportDataSource rds = new ReportDataSource("DataSet1_DataTable1", dt);必须与html中  <rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="DataSet1_DataTable1" />对应,现在直接运行就可以看到效果:

5368853705779570016.jpg

五、加统计行

    打开报表,在footer行收入那列中键入“=Sum(Fields!income.Value)”即求和。

六、分组统计

   点击表格,在左侧上右键“inert group”,插入一个分组 

4287426845257004468.jpg

在“group on”(分组依据)中选择“=Fields!dept.Value”,并且选中“include group footer”,如图:

885520276732113599.jpg

好下面再来预览一下最终效果:

298363475313801707.jpg


最后说明一下:在3.0里面,RDLC报表已经实现了页面的打印的功能

简要说一下外观的设置:

1 设置导出的Excel名称:

在aspx页面的ReportView控件中,设置LocalReport--DisplayName(注:中文好像会出现乱码情况,待解决)

2 设置导出到Excel中的变宽宽度

在rdlc报表中设置 BorderWidth:0.5pt,默认是1pt,虽然在浏览器中看不出什么变化,但是导出来的效果就不一样

3 导出A4打印

经过测试把报表的长度设置为15cm刚好一张A4纸

4 导出一个Excel的多个sheet

要让一个报表导出成多个sheet可以利用设置分页符来完成,而且只有矩形、表或矩阵可以来设置分页符,具体设置如下(以表为例),现在报表中有两个table,想让它们分别两个sheet中,右键单击第2个表,再单击“属性”,在“常规”选项卡上,为“分页符”选择“在此列表前面插入分页符”即可 

5 为每个sheet命名

现在默认的是报表的名称,怎么设置成要的名称,暂没实现



源码

转载于:https://www.cnblogs.com/qiba78/archive/2008/06/24/1229042.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值