C#ReportViewer应用小结
近日由于项目需要,需要做一个报表功能,找了N多资料,最后还是觉得就用以前在VB.NET上用过的ReportViewer控件来完成。但是发现,VS2019居然没有这个控件,下面把安装控件和控件使用方面的经验记录再此。
文章目录
- 1. 下载安装
- 1.1 通过NuGet下载相关包。
- 1.2 安装报表设计器
- 2. 报表设计
- 2.1 添加1个报表
- 2.2 设计报表
- 2.2.1 页面设置
- 2.2.2 添加页眉页脚
- 2.2.3 插入页码
- 2.2.4 主体部分设计
- 2.2.5 主体表格重复标题行
- 2.3 建立数据源
- 2.4 通过reportviewer显示/打印/导出报表
- 3. 小结
1. 下载安装
1.1 通过NuGet下载相关包。
1.2 安装报表设计器
2. 报表设计
2.1 添加1个报表
2.2 设计报表
2.2.1 页面设置
在报表主体外面点击鼠标右键,点击快捷菜单中的报表属性按钮。
在弹出的如下窗口中设置纸张大小和页边距。
2.2.2 添加页眉页脚
在报表主体外面点击鼠标右键,点击快捷菜单中的相应按钮。
注意:页眉页脚的高度需要根据需要设计,报表打印中的页眉页脚高度与再此设计的一样,主体部分高度会自适应。
页眉和页脚可插入的对象如下图:
2.2.3 插入页码
在页脚插入一个文本框,右键点击文本框(注意不是在文本框编辑模式哦),在弹出的菜单中点击“表达式”,如下图。
在弹出的对话框中双击相应的项,再确定就OK。本人测试,一次只能输入1个参数,想要一次性弄成“第N页 共 M 页”好像是不行的,得拿个文本框显示当前页码,一个文本框显示总页数,一个文本框显示“第 页 共 页”,然后将他们的位置调一下。也许是我还没完全搞懂,有知道的可留言分享下。
2.2.4 主体部分设计
主体部分可插入的对象:
2.2.5 主体表格重复标题行
这个花我时间最长,完全把以前的经验忘干净了,查了很多资料才搞定。直接说步骤:
(1) 勾选设计器下方的高级模式,然后在“行组”和“列组”中才会有列出的内容。
(2) 列标题得在“行组”中设置,选中最上面那个“静态”,在设计区域就可以看到标题行被选中了。
(3) 选中主体设计区中表格的标题行,注意是整行选中,点击鼠标右键,在弹出的快捷菜单中点击“Tablix属性”按钮。
在弹出的对话框中勾选红框中的选项,点击“确定”。
2.3 建立数据源
(1) 右键单击属性窗中的项目名称–>新建项–>添加数据集。
(2) 在数据集设计窗体中添加你想要的数据集。我这里为了改写方便,建的是datatable.
报表设计好后,数据集建好了,就可以考虑如何呈现报表了。
2.4 通过reportviewer显示/打印/导出报表
(1) 新建一个winform,在winform中拖放一个reportviewer控件
(2) 点击报表控件右上角的小三角形,选择要显示的报表。
(3) 点击报表控件右上角的小三角形,选择数据源。
(3) 更新数据源内容,并更新报表。我这里需要用到两个数据源,一个是“DataTable01_0”,一个是“DataTable01_1”。此部分我是通过代码来完成的。点击窗体上的“button1”就更新数据和更新报表。代码如下:
private void button1_Click(object sender, EventArgs e){//清除原来datatable中的数据DataSet01._DataTable01_0.Rows.Clear();//给datatable添加新数据,注意数据要与设计的datatable字段对应。DataSet01._DataTable01_0.Rows.Add(new object[] { "2022-01-05-01", "XXXXXX", "XXXXXXX", "XXXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX", 10000000, 1300000, 9000000, "XXXXX", "荀彧", "诸葛亮" });//清除原来datatable中的数据DataSet01._DataTable01_1.Rows.Clear();//给datatable添加新数据,注意数据要与设计的datatable字段对应。for (int i = 1; i <= 100; i++){DataSet01._DataTable01_1.Rows.Add(new object[] { i, "商品名称" + i, "商品规格" + i, "套", 5, 100, 500, "备注内容" + i });}//清除reportviewer1中原来的数据绑定this.reportViewer1.LocalReport.DataSources.Clear();//重新给reportviewer1绑定数据源,名称需要用我们之前设定的 "DataSet01_0"this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet01_0", (DataTable)DataSet01._DataTable01_0));this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet01_1", (DataTable)DataSet01._DataTable01_1));//刷新报表控件,显示最新数据this.reportViewer1.RefreshReport();}
3. 小结
走了不少弯路,整体步骤就是这么一个过程。还有些细节需要慢慢摸索。好像这个报表文件是可以放在服务器的,还没研究出来。希望此文可以让看到的人少走一些弯路。
C#ReportViewer应用小结相关推荐
- 基于MVC4+EF5+EasyUI技术实现通用权限管理系统(EpPlus、HignCharts、Reportviewer报表)...
基于MVC4+EF5+EasyUI技术实现通用权限管理系统(EpPlus.HignCharts.Reportviewer报表) 适合人群:高级 课时数量:150课时 用到技术:MVC.EF.T4.Lo ...
- 【阶段小结】协同开发——这学期的Git使用小结
[阶段小结]协同开发--这学期的Git使用小结 一.Git简介 1. Git简单介绍 2. Git工作流程以及各个区域 3. Git文件状态变化 二.Git安装&Git基本配置 三.个人踩坑 ...
- 正则表达式(括号)、[中括号]、{大括号}的区别小结
正则表达式(括号).[中括号].{大括号}的区别小结 </h1><div class="clear"></div><div class=& ...
- php中$_REQUEST、$_POST、$_GET的区别和联系小结
php中$_REQUEST.$_POST.$_GET的区别和联系小结 作者: 字体:[增加 减小] 类型:转载 php中有$_request与$_post.$_get用于接受表单数据,当时他们有何种区 ...
- c cin.get()的用法小结_c语言中static 用法
static在c里面可以用来修饰变量,也可以用来修饰函数. 先看用来修饰变量的时候.变量在c里面可分为存在全局数据区.栈和堆里.其实我们平时所说的堆栈是栈而不是堆,不要弄混. int a ; int ...
- linux 压缩文件夹格式,Linux下常见文件格式的压缩、解压小结
Linux下常见文件格式的压缩.解压小结 .tar 解包: tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ...
- 设计模式:简单工厂、工厂方法、抽象工厂之小结与区别
简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式.其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性. 本文是本人对这三种模式学习后的一个小结以及对他 ...
- flash 入门课知识小结
一. 几种类型帧的小结:(关键帧.空白关键帧.普通帧) 1. 特点 帧--是进行flash动画制作的最基本的单位,每一个精彩的flash动画都是由很多个精心雕琢的帧构成的,在时间轴上的每一帧都可以 ...
- Eigen/Matlab 使用小结
文章目录 [Eigen Matlab使用小结](https://www.cnblogs.com/rainbow70626/p/8819119.html) Eigen初始化 0.[官网资料](http: ...
最新文章
- 发布程序后显示:未能创建类型
- Win7系统下装Linux操作系统详细流程(图文)
- am5728 是否支持aarch64_am5728开启uart0接口通讯
- 【操作】鼠标hover效果——元素凸起并产生阴影
- canvas rotate 累加旋转_高考数列通项公式解题方法(1):观察法、公式法、累加法、累乘法...
- c语言中判断输入是否为数字_C 判断
- ulink php,【转载】15款USB数字界面横向评测(对比顶级CD转盘)!多看点!
- MySQL名字的年夜小写敏感性
- 微信输入法要来了!就长这个样子
- LeetCode 5352. 生成每种字符都是奇数个的字符串
- 设计模式(一)—单例模式
- 查看linux的系统命令,命令行查看Linux的系统版本和内核版本以及机器字长
- LINUX当前目录下的文件夹大小
- 宏杉科技高端存储再获认可 成功中标国家电网集采
- 关系代数题目小汇总——数据库
- 笔记本电脑用u盘一键重装系统步骤
- 推流拉流RMTP方案:Nginx+ffmpeg/obs+vlc/h5
- 关于网站目录结构需要注意的地方
- YOLO v5 实现目标检测(参考数据集自制数据集)
- c++中cout、cerr、clog的区别