首页 > 编程语言 >C# - VS2019 WINFRM应用程序开发报表

C# - VS2019 WINFRM应用程序开发报表

时间:2023-02-05 14:11:12浏览次数:67  
标签:报表 VS2019 C# Text 程序开发 Add dt 安装 Columns

简单报表我们可以通过label、textBox和PrintDialog来实现,但是一般在实际生产过程中,用户的报表需求一般都是比较复杂的。

本篇主要记录对于传统中国式复杂报表的处理方法和解决思路,为后续的学习、开发做下笔记,不足之处请指正。

REPORTVIEWER控件包安装 

新建一个Winfrm应用程序,右键解决方案,选中NuGet包管理器,搜索Report.Viewer、SqlServer和ReportingServices,完成控件包的安装。

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

RDLC REPORT安装

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

安装初始化

单击“Modify”开始安装

耐心等待完成安装。

添加数据集

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

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

添加报表RDLC

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

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

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

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

WINFRM前台设定

核心代码

  1.   1 private void btnPrint_Click(object sender, EventArgs e)
  2.   2 {
  3.   3 // Jeremy 2019.11.26
  4.   4 // 构造新的DataTable,字段名称和DataTableMain中的一致
  5.   5 DataTable dt = new DataTable();
  6.   6 dt.Columns.Add("dtReportName");
  7.   7 dt.Columns.Add("dtName");
  8.   8 dt.Columns.Add("dtAge");
  9.   9 dt.Columns.Add("dtBirthday");
  10.   10 dt.Columns.Add("dtWorkNO");
  11.   11 dt.Columns.Add("dtInTime");
  12.   12 dt.Columns.Add("dtCall");
  13.   13 dt.Columns.Add("dtJob");
  14.   14 dt.Columns.Add("dtDegree");
  15.   15 dt.Columns.Add("dtRemark");
  16.   16 // 动态添加前台传来的数据
  17.   17 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(),
  18.   18 this.txtCall.Text, this.txtJob.Text, this.txtDegree.Text, this.txtRemark.Text});
  19.   19 // 名称需要用我们之前设定的 "ReportMain.rdlc"
  20.   20 // 另外需要将ReportMain.rdlc文件复制到当前可执行程序目录下
  21.   21 this.reportViewerMain.LocalReport.ReportPath = "ReportMain.rdlc";
  22.   22 this.reportViewerMain.LocalReport.DataSources.Clear();
  23.   23 // 名称需要用我们之前设定的 "DataSetReport"
  24.   24 this.reportViewerMain.LocalReport.DataSources.Add(new ReportDataSource("DataSetReport", dt));
  25.   25 this.reportViewerMain.RefreshReport();
  26.   26 }

效果展示

版权声明:本文为shangsongwww原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/shangsongwww/article/details/106172742

标签:报表,VS2019,C#,Text,程序开发,Add,dt,安装,Columns
From: https://www.cnblogs.com/huandong963/p/17093310.html

相关文章

  • 【C语言】文件的打开和关闭。
    ......
  • vi编辑器里方向键变ABCD,退格键失效
    【问题解决】此问题根因是树莓派系统预装的是vim-tiny版本,就是简易版,且默认是兼容模式。ubuntu系统也有相同的问题。下面提供的方法通用适用ubuntu。使用vim命令时提示命......
  • coderforces E - AND-MEX Walk
    很好的题[观察样例发现只有0,1,2大胆猜测是不是也只会有0,1,2如果不是的话说明某条路径上出现过0,1,2,且是以2,1,0的情况出现的但是2的末尾是0,和1&不可能得到1,所以假设不成立]......
  • brpc内存管理
    内存管理总是程序中的重要一环,在多线程时代,一个好的内存分配大都在如下两点间权衡:线程间竞争少。内存分配的粒度大都比较小,对性能敏感,如果不同的线程在大多数分配时会竞......
  • mac-docker安装使用mysql
    参考:https://blog.csdn.net/m0_67402588/article/details/1260751861、下载镜像,注意这里要下载适配了arm架构的镜像源dockerpullmysql/mysql-server2、创建容器dock......
  • Codeforces Round #849 (Div. 4) A~G1
    欢乐场hhA.询问给定串是否是codeforces的子串voidsolve(){strings="codeforces";stringa;cin>>a;string::size_typeidx;idx=s.find(a);/......
  • 学习css的第二天~
    基本选择器:1、标签选择器:p{color:blue;} 2、类选择器:(对标签里的class属性值进行样式设置)html标签里加入class进行区分<pclass="red">文本</p>在css里......
  • OpenAI ChatGPT 接入微信
     OpenAIChatGPT接入微信,与AI互动!标签:JavaScriptGo人工智能收藏最近的热门话题,OpenAI推出的ChatGPT绝对榜上有名!但是不说注册难度,只说每次需要一......
  • 学习css的第一天~
    css的基本语法:选择器{声明1;声明2;} 内部样式:(用style标签包裹的部分用css语法进行分析,否则html页面会识别不了css代码) 行内样式:(在ht......
  • Slope trick 学习笔记
    Slopetrick学习笔记概述Slopetrick是一种维护凸函数优化dp的方式。通过记录函数的转折点和最右段的一次函数,就可以表示出一个凸函数。一个转折点\(x\)表示在\(......