C# - VS2019 WinFrm应用程序开发报表 - ReportViewer控件初涉
前言
简单报表我们可以通过label、textBox和PrintDialog来实现,但是一般在实际生产过程中,用户的报表需求一般都是比较复杂的。
本篇主要记录对于传统中国式复杂报表的处理方法和解决思路,为后续的学习、开发做下笔记,不足之处请指正。
ReportViewer控件包安装
新建一个Winfrm应用程序,右键解决方案,选中NuGet包管理器,搜索Report.Viewer、SqlServer和ReportingServices,完成控件包的安装。

安装完成后,可以在左侧工具箱中看到ReportViewer控件。

Rdlc Report安装
单击菜单 “扩展”-“管理扩展”,搜索关键字Rdlc Report,完成下载,关闭所有VS项目后,系统自动安装(大约需要10分钟,耐心等待)。

安装初始化

单击“Modify”开始安装

耐心等待完成安装。

添加数据集
右键项目,选择“添加”-“新建项”,选择“数据集”。

添加必要的数据集字段,用于后续报表中需要显示的内容。

添加报表rdlc
右键项目,选择“添加”-“新建项”,选择“Visual C#项”,选择时需要注意,这里的报表是繁体字(只有rdlc模块安装成功才可以选到报表)。

此时,我们可以在如下界面进行报表模板的相关设置了。

空白处单击右键,选择“插入”-“矩阵”,选择我们刚刚建立的数据源。


然后根据需要调整模板,插入行或者列,合并(插入列后即可实现合并单元格)或者拆分单元格。


WinFrm前台设定

核心代码
private void btnPrint_Click(object sender, EventArgs e)
{
// Jeremy 2019.11.26
// 构造新的DataTable,字段名称和DataTableMain中的一致
DataTable dt = new DataTable();
dt.Columns.Add("dtReportName");
dt.Columns.Add("dtName");
dt.Columns.Add("dtAge");
dt.Columns.Add("dtBirthday");
dt.Columns.Add("dtWorkNO");
dt.Columns.Add("dtInTime");
dt.Columns.Add("dtCall");
dt.Columns.Add("dtJob");
dt.Columns.Add("dtDegree");
dt.Columns.Add("dtRemark");
// 动态添加前台传来的数据
dt.Rows.Add(new object[] { this.txtReportName.Text, this.txtName.Text, this.txtAge.Text, this.dtpBirthday.Value.ToString(), this.txtWorkNO.Text, this.dtpInTime.Value.ToString(),
this.txtCall.Text, this.txtJob.Text, this.txtDegree.Text, this.txtRemark.Text});
// 名称需要用我们之前设定的 "ReportMain.rdlc"
// 另外需要将ReportMain.rdlc文件复制到当前可执行程序目录下
this.reportViewerMain.LocalReport.ReportPath = "ReportMain.rdlc";
this.reportViewerMain.LocalReport.DataSources.Clear();
// 名称需要用我们之前设定的 "DataSetReport"
this.reportViewerMain.LocalReport.DataSources.Add(new ReportDataSource("DataSetReport", dt));
this.reportViewerMain.RefreshReport();
}
效果展示

作者:Jeremy.Wu
出处:https://www.cnblogs.com/jeremywucnblog/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
C# - VS2019 WinFrm应用程序开发报表 - ReportViewer控件初涉的更多相关文章
- 部署报表和 ReportViewer 控件 rdlc
部署报表和 ReportViewer 控件 您可以将报表和 ReportViewer 控件作为应用程序的一部分自由发布.根据控件类型以及报表是配置为本地处理还是远程处理,部署要求会有很大不同.在同一个 ...
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用 转自:http://www.cnblogs.com/wuhuacong/arch ...
- 动态绑定ReportViewer控件之经验总结
以上两篇文章已经很丰富了,但是照做一遍不行,检查了N遍还是不行,就是找不出问题原因,总是提示“尚未为数据源“DataSet1_DataTable1”提供数据源实例.”这主要是说在为ReportView ...
- python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐(二)
在上一篇blog:python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐 中介绍了python中的tkinter的一些东西,你可能对tkinter有一定的了解了.这篇b ...
- RS开发日期提示控件默认为昨天之进阶篇
时隔<RS开发日期提示控件默认为昨天>这篇博文已经很久了,请原谅我隔了这么久才继续来写这篇笔记.也希望读到这篇笔记的朋友可以从这篇笔记中学习到一些关于RS日期控件和JS的一些应用知识,当然 ...
- Android零基础入门第17节:Android开发第一个控件,TextView属性和方法大全
原文:Android零基础入门第17节:Android开发第一个控件,TextView属性和方法大全 前面简单学习了一些Android UI的一些基础知识,那么接下来我们一起来详细学习Android的 ...
- Android开发:文本控件详解——TextView(二)文字跑马灯效果实现
一.需要使用的属性: 1.android:ellipsize 作用:若文字过长,控制该控件如何显示. 对于同样的文字“Android开发:文本控件详解——TextView(二)文字跑马灯效果实现”,不 ...
- VS2017中使用ReportViewer控件,vs2017找不到Microsoft Rdlc Report Designer for Visual Studio
VS2017中没有ReportViewer控件,这个控件用来实现在项目中显示和打印关系数据库中的表比较容易,特别是想要打印的时候,这个比用DataGridView和PrintDocument要简单一些 ...
- Qt开发Activex笔记(二):Qt调用Qt开发的Activex控件
若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/113789693 长期持续带来更多项目与技术分享 ...
随机推荐
- 百万年薪python之路 -- MySQL数据库之 完整性约束
MySQL完整性约束 一. 介绍 为了防止不符合规范的数据进入数据库,在用户对数据进行插入.修改.删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数 ...
- Intellij IDEA 常用的插件 建议全装
介绍几个常用的插件 Alibaba Java Coding Guidelines https://plugins.jetbrains.com/plugin/10046-alibaba-java-cod ...
- Cannot read property 'forEach' of undefined
在singer-detail组件中,有一个_normalizeSongs()方法,遍历数组 _normalizeSongs(list) { let ret = []; list.forEach(ite ...
- Linux 提示符格式及颜色
# 提示符颜色配置: 颜色 黑 红 绿 黄 青 紫 蓝 白 字体 30 31 32 33 34 35 36 37 背景 40 41 42 43 44 45 ...
- fenby C语言 P11
else {} if {} #include int main() { int a=15; if(a%2==0) { printf("我是偶数!"); }else { printf ...
- 被低估的.NET(下)-2019 中国.NET 开发者峰会
Time flies!不知不觉距离上篇<被低估的.net(上) - 微软MonkeyFest 2018广州分享会活动回顾>和中篇<被低估的.net(中) - 广州.net俱乐部201 ...
- Scrapy 之settings配置
BOT_NAME 默认: 'scrapybot' 当您使用 startproject 命令创建项目时其也被自动赋值. ROBOTSTXT_OBEY = False 是否遵守rebotes.txt协议 ...
- FBV与CBV
一.FBV FBV(function base views) 就是在视图里使用函数处理请求,也是我们最开始接触和使用的方式. urls.py urlpatterns = [ path('login/' ...
- 热门开源网关的性能对比:Goku > Kong > Tyk
不多说,先展示最后的性能测试结果 我们将Goku与市场上的其他同类热门产品进行比较,使用相同的环境和条件,测试以下产品:Goku.Kong.Tyk.简单介绍下, Goku API Gateway (中 ...
- Jenkins 结合 ANT 发送测试报告
全局变量配置 点击 ManageJenkins进入Jenkins 管理 点击 Global Tool Configuration 进入全局变量配置 配置 Ant ,Name 自己定义一个比较好理解的名 ...