之前也做过报表,因为内容比较简单,就直接用Label和Textbox控件组合画出报表,还添加了PrintDialog打印控件用来打印报表,效果如下图:

代码核心是:将你想要打印的内容绘制到 PrintDocument对象上去,并单击该对象的PrintPage事件

 private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{Bitmap _NewBitmap = new Bitmap(panel1.Width, panel1.Height);panel1.DrawToBitmap(_NewBitmap, new Rectangle(0, 0, _NewBitmap.Width, _NewBitmap.Height));e.Graphics.DrawImage(_NewBitmap, 0, 0, _NewBitmap.Width, _NewBitmap.Height);
}

但是后来遇到复杂的报表上面那种方法就不合适了,看到工具箱里有ReportViewer报表控件,就试着用了用。在网上查阅一番,的确可以完成的需求,但是介绍的很少,都很片面,不够详细,折腾我不少时间。其实我希望能有那种傻瓜式的,教我下一步、下一步,下面我尽量把步骤写的详细一些:

添加数据集

  • 右键项目,选择添加新建项,数据——数据集——添加:

  • 进入DataSet1.xsd中后,在空白处右键,添加-数据表。可以右键数据表添加列,或者通过Ctrl+L快速添加列,数据表名和列名都是可以通过鼠标点击直接修改。

制作报表

  • 右键项目,添加新项——Reporting——报表——添加

  • 进入ReportForm.rdlc中,点击空白处,查看属性-主体-设置Size:Width = 6.646in,Height = 10.052in.在报表空白处右键-插入-文本框。双击文本框可直接输入文字,选中文本框-右键-文本框属性,可调整文本大小、字体、对齐等。

  • 空白处右键-插入-矩阵,会自动跳出数据集属性对话框。名称可以修改,这个很重要,等后面对数据集填充数据时要用到;数据源选刚才上面添加的数据集,可用数据集系统会自动选定 可用的。

  • 点击确定后会出现一个矩阵,你可以通过插入列和行来设计你的表格。有时候需要合并单元格,选中几个单元格右键,弹出菜单选中 合并单元格;但正常是没有 合并单元格那项的,我总结的是:组内部右侧插入列后,就会出现。每个单元格既可以作为文本框输入文本,而且每个单元格右上角有个小菜单,点击小菜单就可以选择数据集中的字段。

  • 通过内置表达式获取打印时间

添加报表界面

  • 右键项目添加新项,选Visual C# 项-Windows窗体

  • 选择工具箱中报表-ReportViewer控件,拖入WebPrintOrder.cs界面中

  • 选择ReportVierwer控件右上角黑色小三角,显示“ReportViewer任务”,选择”在父容器中停靠“;选择报表选择 刚才上面制作的report2.rdlc,reportViewer1的ZoomPercent属性设为75。

添加数据源

  • 通过数据集添加数据

在WebPrintOrder.cs代码设计界面中,为矩阵的数据集DataSet1添加数据,我的数据是通过界面的构造函数传过来的然后直接赋值,也可以直接SQL server条件查询语句将查询结果直接填充。

private void WebPrintOrder_Load(object sender, EventArgs e)
{DataTable dt = new DataTable();//定义本地数据表的列,名称应跟之前所建的testDataTable表中列相同。dt.Columns.Add("Time", typeof(DateTime));dt.Columns.Add("Distance", typeof(String));dt.Columns.Add("Layer", typeof(String));dt.Columns.Add("FID", typeof(Int32));dt.Columns.Add("Strength", typeof(Int32 ));dt.Columns.Add("UserName", typeof(String));//动态生成一些测试用数据DataRow row = dt.NewRow();row[0] = time;row[1] = "管长 "+Distance.ToString ()+"米处";row[2] = Layer;row[3] = FID;row[4] = 4;row[5] = Login.username+"admin";dt.Rows.Add(row);//设置本地报表,使程序与之前所建的testReport.rdlc报表文件进行绑定.this.reportViewer1.LocalReport.ReportPath = "Report.report2.rdlc";this.reportViewer1.LocalReport.DataSources.Clear();this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dt));this.reportViewer1.RefreshReport();
}
  • 通过设置参数添加数据

  • 在report2.rdlc的报表数据中,右击参数-添加参数,设置参数名称和数据类型

  • 在矩阵的单元格文本框属性中,将参数值赋值给单元格。

  • 在WebPrintOrder.cs代码设计界面中,通过代码为参数赋值。
private void reportViewer1_Load(object sender, EventArgs e)
{reportViewer1.ShowParameterPrompts = true;ReportParameter p = new ReportParameter("StartTime", DateTime.Now.ToString("F"));this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { p });this.reportViewer1.RefreshReport();
}

运行结果

C#+Winform用ReportViewer控件制作报表相关推荐

  1. 使用C#自带的ReportViewer控件生成报表

    第一步:新建数据集 第二步:新建模板,添加数据集 第三步:新建Form窗体,拖入ReportViewer控件 第四步:加载之前建立的模板文件 最后一步:赋值 源代码如下: private void F ...

  2. WinCC 7.0 用户归档+Listview控件 制作报表(一)

    项目背景   本项目中包含几套相同的粉灰取样单体设备,每次都需要刷卡启动系统,现场触摸屏会显示刷卡的一些信息(计划号.单位.重量.车号等信息,均为字符串类型).刷卡机是通过RS485接口连接触摸屏,触 ...

  3. reportviewer控件mysql_真正的全动态报表:ReportViewer+RDLC

    本文编译器使用 Visual Studio 2005 数据库采用XML格式 ReportView 版本为2.0 .net版本为2.0 一.水晶报表的缺陷 Crystal Repotrs的功能固然很强大 ...

  4. 在Sharepoint 2010中使用ReportViewer控件展示RDLC报表

    微软的Visual studio提供了ReportViewer控件以及RDLC报表设计工具.下文主要介绍如何在Sharepoint 2010项目开发中使用ReportViewer和RDLC生成项目报表 ...

  5. reportviewer控件mysql_ReportViewer不连接数据库,自定义DataSet导出到报表

    类型:翻译工具大小:4.4M语言:多国语言[中文] 评分:8.1 标签: 立即下载 最近在看报表这一块,在网上找到的大都是连接数据库的,对于自定义的DataTable数据没有详细的连接说明,经过一番寻 ...

  6. VS2010 C# ReportViewer控件新手上路心得

    环境:Visual Studio 2010, C#; 前言:本来是用VS2010连接Oracle数据库做一个报表功能,数据集设置部分出了些问题还未解决,因此先用本地动态数据为测试用例先熟悉VS自带的R ...

  7. ReportViewer 控件安装

    请搜索: C#VS2017 添加 ReportViewer控件  ,相关博客:https://blog.csdn.net/qq_40741855/article/details/81065685 安装 ...

  8. C#Winform的DataGridView控件使用详解1—七种DataGridViewColumn类型使用方法

    C#Winform的DataGridView控件使用详解1-七种DataGridViewColumn类型使用方法 DataGirdView控件Column类型 DataGridViewButtonCo ...

  9. VB.NET基于ReportViewer控件显示RDLC文件学习总结。

    最近一直在学习VB.NET中的ReportViewer控件绑定RDLC文件显示的内容,VB.NET对于这一块的教程并不如C#多,所以好多时候需要模仿C#,今天特地写一个总结,供后边的学习者以供借鉴(本 ...

  10. WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享...

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/chinahuyong/article/details/47395633 WinForm容器内控件批量 ...

最新文章

  1. Linux中查看版本信息命令介绍
  2. BigPipe学习研究
  3. mysql所有表查询
  4. adbunknown Host service问题修复
  5. Lunar New Year and Cross Counting
  6. 选中的磁盘具有mbr分区表。在efi_如何使用老毛桃winpe的Bootice工具备份VHDX文件MBR分区表?...
  7. boost库shared_ptr实现桥接模式
  8. ImportError: cannot import name 'is_string_like'
  9. 信息学奥赛一本通(1196:踩方格)
  10. 源代码电影涉及的计算机思想,关于电影源代码的结局解释
  11. 牛客网暑期ACM多校训练营(第九场)H. Prefix Sum(CDQ分治)
  12. 动态加载Web Service
  13. CentOS7 安装jdk8教程
  14. Photoshop2019 安装破解
  15. 解决微信屏蔽淘宝链接的方法
  16. 如何使用http://paste.ubuntu.com/分享代码
  17. asp毕业设计——基于asp+access的会员管理系统设计与实现(毕业论文+程序源码)——会员管理系统
  18. html2canvas 下载图片 报网络错误
  19. Cocos2d-x 3.2键盘操控列表页的初步实现
  20. 中小企业数据防泄密怎么做,墨门云数据防泄密指南

热门文章

  1. PowerPC家族谱系详解
  2. net-java-php-python-教学资源管理系统hsg修改版计算机毕业设计程序
  3. MongoDB数据库(使用、基本操作)
  4. LaTeX数学公式-详细教程
  5. idea设置字体不生效的问题
  6. 『2022/2/5』Android Studio下载安装详细步骤(Android Studio BumbleBee/2021.1.1.21 Patch 1 )
  7. C语言编程齿轮轮廓线坐标,c语言程序实现齿轮基本参数几何尺寸计算.pdf
  8. 管家婆登录服务器未响应,管家婆辉煌登录点击下一步没有反应解决办法
  9. cs61a 课时笔记 对象的抽象
  10. PC防光护眼专家Iris Pro绿色特别版 傻瓜式软件