C#中使用RDLC报表Word下载.docx

上传人:b****5 文档编号:21622241 上传时间:2023-01-31 格式:DOCX 页数:27 大小:457.59KB
下载 相关 举报
C#中使用RDLC报表Word下载.docx_第1页
第1页 / 共27页
C#中使用RDLC报表Word下载.docx_第2页
第2页 / 共27页
C#中使用RDLC报表Word下载.docx_第3页
第3页 / 共27页
C#中使用RDLC报表Word下载.docx_第4页
第4页 / 共27页
C#中使用RDLC报表Word下载.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

C#中使用RDLC报表Word下载.docx

《C#中使用RDLC报表Word下载.docx》由会员分享,可在线阅读,更多相关《C#中使用RDLC报表Word下载.docx(27页珍藏版)》请在冰豆网上搜索。

C#中使用RDLC报表Word下载.docx

如果将报表的设计形式显示出页眉及页脚,报表的形式会看得更清楚些:

选择页眉及页脚:

显示结果:

现在开始设计报表:

在“页眉”区内放入一个文本框,将内容更改为“测试报表”,居中,字体放大加粗:

从数据源窗口中选择合适的列,用鼠标拖到报表内的“详细信息”表格上,数据会自动填入:

将设计的报表保存后,返回报表浏览窗口,并为报表浏览器选择我们设计的报表:

选中报表文件后,菜单也有所改变:

再为此报表文件指定数据源,选择数据源:

确定,保存文件并运行测试文件。

预览

报表生成后预览如下:

是不是很简单?

我们也可以对这个简单的报表进行美化,当然,我加上美化的一些功能后,可能效果更差,但此处只是为了演示用法。

?

为数据加表格。

在报表设计器中,选择需要加表格框的区域

然后在工具栏中选择边框工具

加什么样的框线根据需要,此处我选择“所有框线”。

看上去比原来的灰线能稍黑一些,在预览时就能看出来了。

加打印时间显示

加入一个显示打印时间的文本框,在上面按右键,选属性:

在“文件框属性”内,选择“值”后面的表达式生成:

在表达式中选择时间:

不要忘记表达式的前面一定要有一个“=”,如果没有,手工加上一个。

为了更符合我们的习惯,前面可以加个说明,如打印时间等,表达式的写法就要稍做改变:

还是以“=”开头,后面加上“打印时间:

”,再以“&”连接生成的Now函数即可得到我们想要的样子。

为行加序号

为了演示,我将序号列加在了表格了最后列

加入一个新的列:

在显示序号的列中输入相关的值:

在此表达式的后面是Nothing,不是null,不要搞错。

三项功能已经完成,预览:

比原来漂亮吗?

至少实用了一些。

使用RDLC报表

(二)--使用自定义数据集

1新建窗体

2建立数据源

3建立报表

新的数据报表已经生成,下面开始对数据源进行设置。

4对报表自动生成的数据源进行设置

选择工具栏à

报表à

数据源,选中所要修改的数据源后,用“重命名”对其进行修改,如myds。

修改完成后,确定退出此窗口。

选中报表设计器内的表格,显示属性。

将表格的数据集名称更改为上面修改的名称。

如果一个报表文件内只有一个数据源,则表格内的数据值可直接写为“=Fields!

字段.Value”的格式,如果包含多个数据源,则要对此字段的取值进行指定,如“=(Fields!

字段.value,“数据集名称””。

5手动生成数据源

手动生成的数据集内必须包含报表文件内设计的字段名称,否则会运行出现错误。

生成数据集:

// 

报表执行操作

private 

void 

button1_Click(object 

sender, 

EventArgs 

e)

{

//取得数据集

string 

connstring 

"

Data 

Source=.;

Initial 

Catalog=Northwind;

Integrated 

Security=True"

;

System.Data.SqlClient.SqlConnection 

conn1 

new 

System.Data.SqlClient.SqlConnection(connstring);

System.Data.SqlClient.SqlCommand 

command1 

System.Data.SqlClient.SqlCommand("

select 

from 

customers"

 

conn1);

System.Data.SqlClient.SqlDataAdapter 

ada1 

System.Data.SqlClient.SqlDataAdapter(command1);

DataSet 

c_ds 

DataSet();

try

conn1.Open();

ada1.Fill(c_ds);

}

finally

conn1.Close();

command1.Dispose();

conn1.Dispose();

//为报表浏览器指定报表文件

this.reportViewer1.LocalReport.ReportEmbeddedResource 

report.Report1.rdlc"

//指定数据集,数据集名称后为表,不是DataSet类型的数据集

this.reportViewer1.LocalReport.DataSources.Clear();

this.reportViewer1.LocalReport.DataSources.Add(new 

Microsoft.Reporting.WinForms.ReportDataSource("

myds"

c_ds.Tables[0]));

//显示报表

this.reportViewer1.RefreshReport();

运行后的数据显示:

使用RDLC报表(三)--向RDLC报表传入参数

在使用报表向客户展示结果数据时,实时的在报表中显示某些特定的数据是必需的,如:

显示的部门、打印的日期等。

本文只简单的演示向报表内传入一个字符值。

如有其它问题,欢迎讨论。

1、新建一个工程TestReport,一个Form窗体,放入一个TextBox、一个Button按钮,再放入一个ReportViewer控件。

2、在ReportViewer上选择新建一个报表

3、在打开的报表设计器中,选择工具栏的“报表”中的“报表参数”,新加一个参数,名称为content,数据类型为string,确定。

4、在报表设计器的页面上放入一个文本框,在文本框上按鼠标右键->

属性,在“文本框属性”窗口中,选择“常规”选项卡内下部的“值”后面的“编辑表达式”按钮(就是那个Fx),在此窗口内,左下框内选择参数,在右下框将会出现在上一步中设置的参数,双击此参数,在上面的框内将出现所需要的表达式:

=Parameters!

content.Value。

保存此报表。

报表默认名称为Report1.rdlc。

5、在Form窗体内双击按钮,编写如下代码:

TestReport.Report1.rdlc"

ReportParameter 

rp 

ReportParameter("

content"

this.textBox1.Text);

this.reportViewer1.LocalReport.SetParameters(new 

ReportParameter[] 

});

6、运行工程,在文本输入框内输入数据,按下按钮,数据是不是已经传入报表了?

//报表参数

ReportParameter[]RP=newReportParameter[8];

//报表参数名称

string[]RptParmsName=newstring[8]{"

p_BillNo"

"

p_compForshort"

p_LuptDate"

p_compFullname"

p_RecoverSigner"

p_deptname"

p_Issuer"

p_DeliveryDate"

};

//报表参数值

object[]RptParmsValue=newobject[8]{dt.Rows[0]["

BillNo"

].ToString(),dt.Rows[0]["

compForshort"

LuptDate"

],dt.Rows[0]["

compFullname"

RecoverSigner"

deptname"

].ToString().Trim(),UserName,dt.Rows[0]["

DeliveryDate"

]};

//为报表传递参数

for(inti=0;

i<

RP.Length;

i++)

RP[i]=newReportParameter(RptParmsName[i],RptParmsValue[i].ToString());

this.reportViewer1.LocalReport.SetParameters(newReportParameter[]{RP[i]});

使用RDLC报表(四)--钻取式报表

本文内以MSServer自带Northwind库文件内的Customers及Orders这两个表为例,建立两个报表文件,在查询得出Customers的表数据后,点击此表内的CustomerID数据,报表将转入至下一个报表,并显示与之相关的Orders的数据,即VS中所谓的钻取式报表。

1、打开一个工程,并新建一个From,放入一个Button及一个ReportViewer控件。

2、在工程内新建一个数据源,连接到Northwind库文件,显示Customers及Orders这两个表

3、新建一个报表文件,并以表格的形式来显示数据,将Customers表内的CustomerID、CompanyName及Address三个字段放入,形成一份有表头及数据的简单报表,并将此报表保存命名为customerReport

4、再建一个报表文件,与customerReport相同,也以表格的形式来显示报表,将Orders内的OrderID、CustomerID、ShipName及OrderDate四个字段放入表格内,报表保存为orderReport

5、orderReport的数据源根据主报表customerReport的数据来确定数据源的数据,查看表格的数据集名称,我的显示为NorthwindDataSet_Orders,也可以自己另建一个,具体方法见我的《RDLC报表

(二)》

6、再打开customerReport报表,将CustomerID设置成为可点击的索引字段,以便转入下一个报表。

选择CustomerID字段,按鼠标右键,在”文本框属性“窗口中,选择”导航“选项卡,在下面的”超链接“中选择”跳至报表“,在报表名称中选择”orderReport“,再按下后面的”参数...“按钮,输入一个参数名称,如customerid,参数值选择=Fields!

CustomerID.Value。

为了与其它数据相区分,可以将此列数据根据自己的习惯改变颜色或加下划线

7、在orderReport中,设置一个报表参数,与CurtomerReprot中的名称相同,以接收父表中传入的参数

8、新建两个取得数据的方法,一个从Customers中取得数据集,另一个从Orders中取得数据集,且带参数。

此两个方法可以自己编写类库来实现,也可以在VS的数据集内添加。

为了演示方便,我直接使用了Customers的GetData(),并编写了一个Orders的GetDataByCustomerID(@cid)的方法。

9、在From的Button中编写如下代码:

button2_Click(object 

NorthwindDataSet.CustomersDataTable 

dt1 

NorthwindDataSetTableAdapters.CustomersTableAdapter().GetData();

TestReport.customerReport.rdlc"

ReportDataSource("

NorthwindDataSet_Customers"

dt1));

10、使用报表的Drillthrough事件,当选择了钻取项时会发生此事件,给下一个报表取值,代码如下:

reportViewer1_Drillthrough(object 

DrillthroughEventArgs 

LocalReport 

lp 

(LocalReport)e.Report;

customerid 

lp.GetParameters()["

customerid"

].Values[0].Trim();

lp.DataSources.Clear();

lp.DataSources.Add(new 

NorthwindDataSet_Orders"

NorthwindDataSetTableAdapters.OrdersTableAdapter().GetDataByCustomerID(customerid)));

运到结果:

运行第一份报表:

钻取后运行第二份报表:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1