C#利用ReportViewer生成报表

首先我们要了解一下ReportViewer是什么:

ReportViewer是一个用于展示和生成报表的控件,可以直接在Visual Studio工具箱中找到。它可以与多种数据源连接,包括SQL Server、Access、Excel、Oracle等。使用ReportViewer可以帮助我们轻松地生成各种报表,如图表、列表、矩阵等。

下面是在C#中利用ReportViewer生成报表的完整攻略:

步骤一:添加ReportViewer到工具箱

在Visual Studio的工具箱中,右键空白处选择"Choose Items",在弹出的"Choose Toolbox Items"对话框中选择".NET Framework Components"选项卡,在中间区域找到"ReportViewer"控件,选中它并点击"OK"按钮即可将ReportViewer控件添加到工具箱中。

步骤二:设计ReportViewer

1.在要使用ReportViewer的窗体中拖拽ReportViewer控件,并设置控件的Dock属性为Fill,使得它充满整个窗体。

2.在Solution Explorer中右键单击该项目,选择"Add"->"New Item"->"Report",并在弹出的"Add New Item"对话框中选择"Report Wizard",按照向导的指示逐步完成报表的设计。

步骤三:连接数据源

在报表设计向导的某一步中,需要选择数据源。可以选择如下几种数据源:

  • SQL Server
  • Microsoft Access
  • Oracle
  • ODBC
  • OLE DB

在这里我们以SQL Server为例说明。

在选择"SQL Server"数据源后,填写SQL Server的连接信息,并测试连接是否成功。接下来可以选择要使用的表或视图,并对它们进行数据筛选和排序。

步骤四:设置报表的布局和样式

在向导中,你可以对报表的每一个部分进行布局和样式的设置,包括标题、页眉、页脚、数据区域、图例、数据标签等。可以选择表格、矩阵、图表等布局方式,并对每一个元素进行自定义的设置。

步骤五:绑定报表数据

在报表的绑定过程中,需要指定数据源,并选择要显示的字段。在设计向导的某一步中,选择"Specify the datasets and fields to use in the report"选项,它将显示已选择的表或视图,可以指定数据集的名称和关系,然后设置要显示的每一个字段。

步骤六:运行报表

完成报表的设计以后,可以在窗体中直接实时预览报表。在窗体代码中调用ReportViewer控件的Refresh()方法即可。如下:

this.reportViewer1.RefreshReport();

示例一:以SQL Server为数据源

在选择SQL Server作为数据源时,需要输入SQL Server的登录信息和要连接的数据库名称。在选择数据表或视图时可以选择多个表或视图,也可以写入自定义的SQL语句来获取数据源。

接下来我们以一个示例说明如何绑定数据和显示数据。

1.在ResumeReport.rdlc报表上右键,选择"Dataset",创建一个新的数据集,并在弹出的Dataset Properties窗口中指定数据源的位置和类型,这里 我们选择"New"->"Adhoc..."来指定自定义的SQL语句。

2.在弹出的Query Designer中输入SQL语句,以查询"Resume"表中的数据为例:

SELECT * FROM Resume

3.在Report Designer中拖拽表格控件,输入控件内的列名和数据集的名称即可完成数据与表格的绑定,最后将ReportViewer控件与报表绑定,即可显示数据。

this.reportViewer1.LocalReport.ReportEmbeddedResource = "ReportDemo.Report1.rdlc";
this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("ResumeDataSet", dt));
this.reportViewer1.RefreshReport();

示例二:以XML为数据源

如果没有数据库可以使用为报表提供数据,可以将数据保存为XML格式以使用ReportViewer,而不必连接到数据源。

接下来我们看一个简单的示例,以XML文件作为数据源。

1.先准备一份XML格式的数据文件,比如ResumeList.xml:

<?xml version="1.0" encoding="utf-8"?>
<ResumeList>
  <Resume>
    <Name>张三</Name>
    <Age>30</Age>
    <Sex>男</Sex>
    <Telephone>13888888888</Telephone>
  </Resume>
  <Resume>
    <Name>李四</Name>
    <Age>25</Age>
    <Sex>女</Sex>
    <Telephone>13999999999</Telephone>
  </Resume>
</ResumeList>

2.在Visual Studio中选择"Add New Item" -> "Report" -> "Report Wizard",按照向导的指示完成报表的创建,选择"Embedded XML"作为数据源。

3.在报表设计向导的某一步中,填写XML文件的路径和要使用的XML数据集的名称。 ReportViewer会根据指定的XML数据文件的路径自动推断出数据源,然后使用指定的XML数据集名称创建一个数据集。

4.设计报表的布局和样式,绑定报表数据,使用智能标记语言 (XML的脚注) 对数据值进行引用等。

this.reportViewer1.LocalReport.ReportEmbeddedResource = "ReportDemo.Report2.rdlc";
XmlReader reader = XmlReader.Create("ResumeList.xml");
DataSet dataSet = new DataSet();
dataSet.ReadXml(reader);
this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("ResumeDataSet", dataSet.Tables[0]));
this.reportViewer1.RefreshReport();

以上两个示例就是使用C#利用ReportViewer生成报表的完整过程,可以在Visual Studio中进行尝试。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#利用ReportViewer生成报表 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • 一个可用于生产项目 基于 .NET 6 自研ORM

    Fast Framework 作者 Mr-zhong 代码改变世界…. 一、前言 Fast Framework 基于NET6.0 封装的轻量级 ORM 框架 支持多种数据库 SqlServer Oracle MySql PostgreSql Sqlite 优点: 体积小、可动态切换不同实现类库、原生支持微软特性、流畅API、使用简单、性能高、模型数据绑定…

    C# 2023年4月22日
    00
  • Winform中Treeview实现按需加载的方法

    一、Winform中Treeview实现按需加载的方法 Winform中的Treeview控件非常适合用于显示树形结构的数据,但如果树的层次比较多或者数据比较庞大,一次性将所有数据全部加载到TreeView中显然不太现实,这时就需要实现按需加载的功能,即当需要展开树节点时,才动态地加载该节点下的子节点。 实现按需加载需要以下几个步骤: 1.设置TreeVie…

    C# 2023年5月31日
    00
  • asp.net微软图表控件使用示例代码分享

    这里给出一个完整攻略,讲解如何使用asp.net微软图表控件,包括实现基础图表的绘制、样式和格式设置以及数据绑定等操作。 准备工作 在开始之前,我们需要准备一些工作,如安装相应的软件、添加图表控件、引用相关命名空间等。下面是具体步骤: 安装软件 首先,我们需要安装Microsoft Visual Studio和ASP.NET Web Forms应用程序开发工…

    C# 2023年5月31日
    00
  • C#自定义事件及用法实例

    C#自定义事件及用法实例 在C#编程中,事件是编写高效程序不可缺少的一个重要部分。在C#中,可以使用内置的事件(System.EventHandler)来对事件进行处理。同时,也可以使用自定义的事件来实现特定要求的事件处理。 本文将详细介绍C#自定义事件及用法实例,帮助读者更好地理解事件机制并掌握自定义事件的应用。 什么是C#自定义事件 自定义事件是基于内置…

    C# 2023年6月1日
    00
  • C#遍历文件夹后上传文件夹中所有文件错误案例分析

    下面是“C#遍历文件夹后上传文件夹中所有文件错误案例分析”的完整攻略。 问题描述 在使用C#编写上传文件夹中所有文件的程序时,如果不注意程序的细节,很容易出现错误。其中一个常见的错误情况是: 在遍历文件夹的过程中,存在文件夹中包含文件夹的情况。如果不对这些内层文件夹进行正确的处理,就会造成上传的文件丢失或上传失败等问题。 下面我们来介绍一些正确处理内层文件夹…

    C# 2023年5月14日
    00
  • Unity色子的投掷和点数的获得详析

    Unity色子的投掷和点数的获得详析 简介 Unity中自带的Dice Roller模块提供了非常便利的骰子投掷功能,本文将详细讲解如何使用该模块进行色子投掷以及如何获取色子的点数。 前置知识 在使用Dice Roller模块之前,需要先了解Unity的游戏对象和脚本的基本使用方法。 基本用法 投掷一个骰子 要使用Dice Roller模块投掷一个骰子,可以…

    C# 2023年6月3日
    00
  • LINQ基础之Intersect、Except和Distinct子句

    LINQ基础之Intersect、Except和Distinct子句 在LINQ中,Intersect、Except和Distinct都是集合操作符,用于将两个或多个集合进行相应的操作,并返回相应的结果集。 Distinct子句 Distinct操作符用于从序列中过滤重复的元素,只保留第一个出现的元素。例如: var numbers = new [] { 1…

    C# 2023年5月31日
    00
  • 深入理解C#序列化与反序列化的详解

    深入理解C#序列化与反序列化的详解 本文将详细介绍C#中的序列化和反序列化概念、原理和常见用法,帮助读者全面了解这一重要的语言特性。 什么是序列化和反序列化? 序列化(Serialization)是指将对象转换成二进制流(byte array),以便能够在网络上传输、存储到文件或数据库等场合使用。反序列化(Deserialization)则是将二进制流还原为…

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部