C# ReportViewer 自动生成报告(自动创建 表 和文本框 )

引言

在做一些应用程序时难免会涉及到报表的查看和office文件的导出,这里主要介绍 VS2010下 ReportViewer控件报表的使用。关于ReportViewer控件的一般性用途可查阅的资料已经很完善了,此处不再赘述。

一般地,当报表格式定死的时候,我们只需要在.rdlc文件上按照给定的布局,布置好界面,再将数据绑定上去即可实现报表的显示了。比如,可以添加一个 table作为查询数据的呈现,然后指定绑定的dataset,将table的每一列数据指定好就可以了;但是,在一些情况下,我们无法获知需要显示数据的 大小(table列的数量),而且,这个数据源可能是来自很多地方而不是只针对数据库中的一个表或视图,这样就导致这种传统方法的失效!

正文

实际上,很多前辈已经很好得解决了这个问题,即动态生成 .rdlc文件,我在这些基础上根据我个人的应用情况,写下此文以作记录。主要参考代码为“蜡人张” ,“RDLC”--“DynamicTable”,该程序(代码在后面文章链接里面可以下载)。“DynamicTable”是以XML作为数据源动态生成rdlc并呈现在 ReportViewer上面,这种方法分离了.rdlc文件和数据源的“死绑定”,可以更加灵活的适应复杂的数据来源问题。

1.可以根据实际情况自动创建 DataTable数据,

2.根据DataTable的列的数目动态生成符合的Table,并动态生成.rdlc格式的流文件

3.private MemoryStream m_rdl; this.reportViewer1.LocalReport.LoadReportDefinition(m_rdl);


藉此方法,我们还可以代码生成其他类型的数据,比如一个显示Table,文本框等

步骤

1.首先,找到创建Report的函数,其中CreateDataSources() 创建数据连接函数,CreateBody()为为报告主体,CreateDataSets()创建数据集

        private Rdl.Report CreateReport()
        {
            Rdl.Report report = new Rdl.Report();
            report.Items = new object[] 
                {
                    CreateDataSources(),
                    CreateBody(),
                    CreateDataSets(),
                    "6.5in",
                };
            report.ItemsElementName = new Rdl.ItemsChoiceType37[]
                { 
                    Rdl.ItemsChoiceType37.DataSources, 
                    Rdl.ItemsChoiceType37.Body,
                    Rdl.ItemsChoiceType37.DataSets,
                    Rdl.ItemsChoiceType37.Width,
                };
            return report;
        }


2.其中我们主要关注CreateBody(),自动创建的table和textBox就在此函数里面实现,CreateReportItems()里包含各显示项目

        private Rdl.BodyType CreateBody()
        {
            Rdl.BodyType body = new Rdl.BodyType(
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
引用\[1\]和\[2\]是关于C#中使用FastReport和System.Data.SqlClient的命名空间的引用。这些命名空间提供了在C#中生成报所需的功能和类。引用\[3\]是一个关于使用本地动态数据作为测试用例来熟悉VS自带的ReportViewer控件的前言。 要在C#中生成报,可以使用FastReport库。首先,确保已经安装了FastReport库,并在项目中引用了相应的命名空间。然后,可以使用FastReport提供的类和方法来创建和设计报模板,设置数据源,填充数据,并最终生成报。 另外,如果你想使用ReportViewer控件来生成报,可以使用System.Data.SqlClient命名空间中的类来连接数据库并获取数据。然后,将数据绑定到ReportViewer控件上,以生成报。 总之,要在C#中生成报,你可以使用FastReport库或者使用ReportViewer控件,并根据需要引用相应的命名空间和类。 #### 引用[.reference_title] - *1* *2* [C#调用报生成器成功案例示例研究](https://blog.csdn.net/RoffeyYang/article/details/118365066)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C#——ReportView生成报](https://blog.csdn.net/jiDxiaohuo/article/details/101371190)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值