搜档网
当前位置:搜档网 › 利用reportviewer与C#生成报表

利用reportviewer与C#生成报表

利用reportviewer与C#生成报表
利用reportviewer与C#生成报表

关于编写报表,职场中的人相信都会有所感慨,一份整洁、优美的报表会为你在上司面前增色不少,甚至加薪:) ——大家都喜欢加薪,对吧?在本文中,将向大家介绍怎样利用MS Reporting Services 2005来创建一份报表,并用一个C#小程序来生成它。

本文假定读者已对Visual Studio 2005 IDE有了初步的了解,并能用C#编写代码,懂不懂MS Reporting Services都对理解本文没有关系,当然了,之前写过类似的报表,将有助于你更快地上手。好了,卷起袖子,准备开始吧!

请看图1,这份报表有多复杂?猜猜它需要多少时间完成?就复杂而言,它只是一份简单的、从NorthWind->Products (SQL Server 2000)中提取出来的报表;就时间而言,相信不会花你一整个小时吧。

图1

下面,我们开始创建报表,首先要编写一个生成报表的C#小程序。

第一步:创建一个Windows应用程序

选择文件菜单,新建-工程,从工程类型中选择C#,从右方对话框中选择Windows应用程序;在名称栏中,最好用一个表明程序用途的名字;在位置栏中,写明你想要保存的目录。完成之后,工程中会有一个Form1,我们就从对它的窗体设计器开始讲解。

像下面这样修改Form1的属性,当然也可以依个人喜好修改其他的属性:

Form1.Text = "MS Reporting Services 101 with Smart Client"

Form1.Size = 750, 300

第二步:为窗体(Form)添加报表查看器(Report Viewer)

什么是报表查看器,就像看DVD碟时需要一部DVD播放机一样,我们需要一个报表查看器来预览报表。

对初写报表的人来说,报表查看器可以说是赋予了报表生命,它不仅可预览输出,还可帮助将报表信息生成各种格式(PDF或Excel等等),打印出来更不在话下。

[span] 请按如下步骤在Form1上放置好报表查看器控件:

依次找到工具箱(ToolBox)-数据(Data)-报表查看器(ReportViewer),并把它拖到Form1上。这会创建一个名为reportViewer1新的实例。

通过设置reportViewer1.Dock = Fill,报表查看器将会填充窗体的整个区域,以显示报表。在完成第一步与第二步之后,工程看起来应该如图2所示:

图2

第三步:为工程添加数据集(DataSet)

数据集是伴随报表查看器而来的,它保存并提供从数据源而来的原始数据,我们便可对这些原始数据进行处理或在C#程序中输出。

请依照如下步骤添加数据集:

从解决方案资源浏览器中选择添加-新项目-数据集,将其名称DataSet1修改dsProduct,并单击添加按钮完成。

添加一个数据表到新创建的数据集中。数据表实质上是用来加载报表数据的,在设计报表时,将会用到DataSet/DataTable中的相关信息。

以下为添加数据表到数据集(dsProduct)中:

从解决方案资源浏览器中双击dsProduct,将会打开设计视图,右键单击并选择添加-数据表。接着,单击表头修改名称为dtProductList,如图3:

图3

接下来开始为数据表(dtProductList)添加列,此时的设计视图应该如图4所示。右键单击dtProductList并选择添加——列(Column)。

图4

重复以上步骤添加以下列:

ProductName (String)

QuantityPerUnit (String)

UnitPrice (Double)

UnitsInStock (Double)

UnitValue (Double):一个基于UnitsInStock * UnitPrice的计算域

在添加列时,默认为String数据类型,添加完之后请转到属性窗口,修改相应的列为Double类型。

请看图5,现在的数据表看上去应该就像这样子了。同时,你也可查看属性窗口来修改数据类型。

图5

第四步:为工程添加报表

到目前为止,我们已经创建了工程,添加了报表查看器与数据集;现在,是时候创建一份整洁、优美的报表了。

需按照以下步骤生成报表(rptProductList.rdlc):

从解决方案资源浏览器中选择添加-新项目-报表,把名称Report1.rdlc修改为rptProductList.rdlc,并单击添加按钮完成。

工程可能会像图6这样;而添加完报表之后,就可以开始使用数据集(DataSet)进行设计了。

图6

无论你是第一次设计报表的新手,或是历经沙场老手,都必须与以下三种最基本的报表区域打交道:页眉(或叫表头)、页脚、表体。一般来说,报表在设计时,就应该有一个腹稿,如多大的纸张、应该怎样排版等等,通常都为信纸大小、纵向排版。当然了,如果能在动手之前,先在纸上画个草图,这样更好。可以回过头来看一下图1,在页眉,已经有了报表名及报表日期,表体中有产品的相关信息列表,而页脚中有页码。

那我们就从页眉开始吧。当添加新报表到工程时,默认情况下,在报表设计器中只能看到表体。右键单击报表设计器的表体之外处,选择页眉,这会在报表中添加一个页眉,可以随意调整页眉与表体区的高度,请看图7,图7中减少了表体的高度,增加了页眉的高度。

图7

在报表设计器的工具箱中,你可以看到用于设计报表的各种各样的控件。在我们这个例子中,会用到TextBox、Line和Table控件。现在我们开始设计页眉了。拖动两个TextBox 并把它们置于页眉区,TextBox既能显示静态也能显示动态的数据,而Line控件用于把页眉从表体区中分隔出来。控件放置好之后,可以修改它们的属性以显示我们所需的值,例如可以指定一个TextBox为报表标题,而另一个TextBox显示当前日期。选择TextBox之后,可直接在其内输入静态文本。

请照以下修改标题TextBox:

V alue = "Product List"

Color = Purple

而日期TextBox则修改为:

V alue = "Run Data: " & Today

Color = Purple

[span] 要注意了,日期TextBox的Value属性以"="符号打头,这代表它不是一个简单的静态文本,而是一个表达式,这个表达式是字符串"Run Date"与https://www.sodocs.net/doc/db14122546.html,脚本Today的结

果。

另外多说一点,你可对报表中所有对象指定任何你想要的名称,一般对大多数控件而言,保持默认名称就好了,此处把标题TextBox的名称(即Name属性)指定为“txtTitle”。

参照图8,完成页眉设计之后,应该看起来就像这样子:

图8

现在是表体了。表体是承载信息的详细区域,是整个报表最重要的部分,而且你也看到了,当添加报表到工程时,表体已经自动添加了,我们只需要在上面放些控件就行了。

从传统意义上来说,表体区是用于显示详细数据的(在本例中,为产品信息),并且通常为多行信息,而随着报表上数据的增多,表体区也相应会扩展,但一般来说,报表只会设计为一页(信纸或A4纸大小)。

在表体区中,有三种最常用的控件:Table、Matrix、List,在本例中会使用Table控件。在报表设计界面中,拖动并把Table控件放置于表体区中,你会看到,这会生成一张三行三列的表,而中间一列则已被标记为:Header、Detail、Footer。

当你知道Table控件只不过是一堆TextBox的组合,是不是有点吃惊呢。对了,Talbe 中的每个单元(Cell)都与TextBox一样,也就是说,可以在其中输入静态文本,或指定一个动态表达式。

在开始设计表体区之前,记得要多添加两列(我们的报表中有5列喔),添加列非常简单,依照以下步骤就行了:

1、在表体区中选择Table控件。

2、左键单击最右边一列的表头(此处假设你是从右边添加新列的)。

3、右键单击表头,并选择“Insert Column to the Right”(在右边插入列)。

现在报表看起来应该像图9了,可以依据列中的数据随意调整列的宽度。

图9

大家多半也用过Excel或类似的东西吧,可以把Table控件看成是一张迷你工作表,在其中可以选择边框类型、改变任一单元格的字体等等。因此,所需做的就是依之前设想好的格式来设计表格。

我们从第一列开始,随后的每一列也一样,单击最上方的单元格并依次输入:

表头1:“Product Name”

表头2:“Packaging”

表头3:“Unit Price”

表头4:“Units in Stock”

表头5:“Stock V alue”

而在接下来的详细数据区(即前面的Detail)中,需要输入表达式,其为dsProduct.dtProductInfo中的列,在此既可以手工输入表达式,也可以从数据源(Data Sources)工具箱(见图7左边)中拖放实现。

如果想要手工输入,请从数据区的第一列至最后一列,单击单元格并输入:

Detail 1: "=Fields!ProductName.Value"

Detail 2: "=Fields!QuantityPerUnit.Value"

Detail 3: "=Fields!UnitsInStock.Value"

Detail 4: "=Fields!UnitPrice.Value"

Detail 5: "=Fields!UnitsInStock.Value * Fields!UnitPrice.Value"

请留意Detail 5,它是一个对Units in Stock与Unit Value相乘计算之后的输出。另外提醒一点,如果是拖动列到Table控件中的数据区来实现的,此时如果表头为空,它会自动添加表头。

最后,在Table控件的页脚添加一累计栏,选择表体区第4与第5列的页脚单元格,输入:

单元格4:“Total Value:”

单元格5:"=SUM(Fields!UnitsInStock.Value * Fields!UnitPrice.Value)"

单击单元格5,这是使用了一个内置的SUM()函数来得到累计的结果。

最后只剩下页脚区了,在开始编写一些C#代码之前,还需完成报表的页脚,正如前面添加报表页眉一样,在打开的报表设计器中,右键单击并选择页脚(Page Footer),见图7。拖动一个Line和TextBox控件置于页脚区,并在TextBox中输入以下表达式:

V alue: ="Page: " & Globals!PageNumber & "/" & Globals!TotalPages

大家可以看到,此处使用了PageNumber和TotalPages,两者皆为全局变量。

现在,报表应该像图10这样了,此处,还改变了一点颜色,把数值类数据右对齐,把Table当作一张Excel工作表好了,可以随意调整为你想要的外观。

图10

快大功告成了!剩下的就是表达式生成器了。表达式生成器是Reporting Services中一个非常强大的工具,正如图11中所见,Stock Value是通过SUM函数计算得到的,DateSet 中的所有数据都可以由“Fields!”关键字访问。

图11

第五步:编写赋予报表生机的C#代码

从解决方案资源浏览器中,选择Form1,右键单击并选择查看代码,为Form1_Load添加以下代码:

using System.Data.SqlClient;

using Microsoft.Reporting.WinForms;

private void Form1_Load(object sender, EventArgs e)

{

//声明连接字符串

string cnString = @"(local); Initial Catalog=northwind;"+"User Id=northwind;Password=northwind";

//如果使用标准安全属性,请改为以下代码

//string cnString = @"Data Source=(local);Initial Catalog=northwind; Integrated

Security=SSPI";

//声明连接、命令对象及其他相关对象

SqlConnection conReport = new SqlConnection(cnString);

SqlCommand cmdReport = new SqlCommand();

SqlDataReader drReport;

DataSet dsReport = new dsProduct();

try

{

//打开连接

conReport.Open();

//准备连接对象以把获取的数据放入数据集

https://www.sodocs.net/doc/db14122546.html,mandType = CommandType.Text;

cmdReport.Connection = conReport;

https://www.sodocs.net/doc/db14122546.html,mandText = "Select TOP 5 * FROM Products Order By ProductName";

//从命令对象中读取数据

drReport = cmdReport.ExecuteReader();

//有了https://www.sodocs.net/doc/db14122546.html,,可把读取来的数据直接加载到数据集中

dsReport.Tables[0].Load(drReport);

//关闭读取及连接

drReport.Close();

conReport.Close();

//为查看器提供本地报表数据

rpvAbraKaDabra.LocalReport.ReportEmbeddedResource =

"rsWin101.rptProductList.rdlc";

//准备报表数据源

ReportDataSource rds = new ReportDataSource();

https://www.sodocs.net/doc/db14122546.html, = "dsProduct_dtProductList";

rds.Value = dsReport.Tables[0];

rpvAbraKaDabra.LocalReport.DataSources.Add(rds);

//加载报表查看器

rpvAbraKaDabra.RefreshReport();

}

catch (Exception ex)

{

//显示错误信息

MessageBox.Show(ex.Message);

}

finally

{

//检查连接是否仍然打开,如果是,关闭它。

if (conReport.State == ConnectionState.Open)

{

conReport.Close();

}

}

}

看到这,大家可能会想,为什么在select查询语句中使用了“TOP 5”,此处只是作演示的目的,对输出作一限制,以得到如图1中的累计结果。另外,ReportDataSource的Name 属性应总为“DataSet_DataTable”。

本文来自CSDN博客,转载请标明出处:https://www.sodocs.net/doc/db14122546.html,/mountplorer/archive/2009/05/07/4157216.aspx

Reportviewer_报表

https://www.sodocs.net/doc/db14122546.html,服务器控件使用之Reportviewer 报表 1.Reportviewer 报表 1.1.Reportviewer控件 注:本教程附2个事例: ●演练:在本地处理模式下将数据库数据源与ReportViewer Web 服务器控件一起使用 ●演练:在本地处理模式下将业务对象数据源与ReportViewer Web 服务器控件一起使用 如果您已经对ReportViewer控件基础知识比较了解,可以直接参阅事例。 1.1.1.简介 Microsoft Visual Studio 2005 包括报表设计功能和ReportViewer 控件,使您可以将功能完整的报表添加到自定义应用程序。报表可以包含表格格式数据、聚合数据和多维数据。提供ReportViewer 控件的目的是可以处理和显示应用程序中的报表。控件有两种版本。 ReportViewer Web 服务器控件用于在https://www.sodocs.net/doc/db14122546.html, 项目中驻留报表。ReportViewer Windows 窗体控件用于在Windows 应用程序项目中驻留报表。 这两种版本的控件都可以配置为以本地处理模式或远程处理模式运行。配置为何种处理模式将影响有关报表从设计到部署的所有方面。 ●“本地处理模式”是指ReportViewer 控件在客户端应用程序中处理报表。所有报表都 是使用应用程序提供的数据作为本地过程处理的。若要创建本地处理模式下使用的报表,需要使用Visual Studio 中的报表项目模板。有关详细信息,请参阅将ReportViewer 配置为进行本地处理。 ●“远程处理模式”是指由SQL Server 2005 Reporting Services 报表服务器处理报表。在 远程处理模式下,ReportViewer 控件用作查看器,显示已经在Reporting Services 报 表服务器上发布的预定义报表。从数据检索到报表呈现的所有操作都是在报表服务器上 处理的。若要使用远程处理模式,则必须具有SQL Server 2005 Reporting Services 的 许可副本。有关详细信息,请参阅将ReportViewer 配置为进行远程处理。 若要在应用程序中使用ReportViewer 控件,则必须了解如何将控件添加到项目表单或网页中,如何配置控件来使用本地报表定义或服务器报表,如何更新数据源引用,以及如何在应用程序中测试和部署报表和控件。提供的演练有助于您学习这些关键技能。有关详细信息,请参阅示例和演练。 1.1. 2.将Reportviewer配置为进行本地处理

Visual Studio 2008 水晶报表快速入门

Visual Studio 2008 水晶报表快速入门 医手 先新建一个Web项目: CrystalWebApp 为项目添加新项: CrystalReport1.rpt

在弹出的对话框,选择作为空白报表。用向导当然更方便,但在这里,白手起家或许能更好地理解。 在工具箱选择 Text Object,拖到报表头。写些字,设置字体之类的。在属性选项卡设置它的名字为 txtTitle 以供将来程序访问。 水晶报表对于程序员来说其实跟 Repeater 控件是很相似的。于是需要数据和字段名。在Repeater 控件中你可以很随意地指定要绑定的字段名。在程序还没有真正运行之前,这个字段名可以没有任何表的字段名跟它匹配,也可以没有任何类的属性名跟它匹配。但在水晶报表中,字段名在设计阶段就必须是真实存在的。还能稍感安慰的是,水晶报表一旦设计好之后,就能像 Repeater 控件那样绑定任意类型的对像。而不必是设计时指定字段来源的表或类。所以我们现在要创造些真实存在的字段名…… create table TabTest ( UserID int, UserName nvarchar(50), Age int, Birthday datetime ) 你可以用 Access 或者 Excel 来创造真实存在的字段名,但我这里是使用 SQL Server。 在 "字段资源管理器" 的 "数据库字段" 上按右键,选择 "数据库专家..."。在

弹出的对话框中,创建新连接==>OLE DB (ADO)(Access 或者 Excel 应点 "数据库文件" 前的 "+" 号)。在弹出的对话框,选择 "SQL Native Client" 作为提供程序。 按提示一步步地做,直到连上数据库。选择表 TabTest,把它弄到右边的框中。再点击确定。 折腾了半天就是为了这些字段名。对水晶报表的开发商无语…… 把需要显示的字段拖到 "详细资料"。"页眉" 和 Word 文档中的页眉完全不是一回事。这里的页眉其实就是列名(表头)。那么就顺便改一下列名吧。默认是有下划线的,可以改一下格式。

易语言使用Grid++Report起步教程

易语言使用Grid++Report起步教程 概述: 在本教程中,首先介绍用 Grid++Report 的报表设计器应用程序设计一个简单的清单式报表,我们最后会得到一个与 Grid++Report 例子模板中的‘简单列表.grf’类似的报表模板。接下来我们学习怎样让‘简单列表.grf’例子模板在易语言程序中运行起来。首先实现报表的打印与打印预览功能,通过本部分的学习我们可以得到一个类似本教程附带的‘打印与打印预览报表.e’程序。然后我们学习利用 Grid++report 的查询显示器控件实现报表在窗口中的查询显示,我们会创建一个类似本教程附带的‘在查询显示控件中显示报表.e’程序。通过本教程的学习,你将对 Grid++Report 报表模板设计与在易语言中使用 Grid++Report 有一个初步与直观的了解,开启你用 Grid++Report 在易语言中开发报表的大门,为你更进一步学习奠定了良好的开端。 具备一定的数据库方面的知识对开发报表非常重要,因为报表一般都需要从数据库中取数据,然后由报表工具生成出来,你应该对数据库方面的一些基本概念有所了解,能够写出基本的 SQL 查询语句。如果你具备这些基础知识,你学习用 Grid++Report 在易语言中开发报表会非常容易,如果你觉得这方面有所欠缺,建议你加强这方面的学习。本教程适用于第一次接触 Grid++Report 或对 Grid++Report 在易语言中使用还没有入门的易语言开发者。完成本教程的学习之后,建议你浏览并运行一遍 Grid++Report 自带的全部易语言例子,对 Grid++Report 的功能有所了解。 使用本教程你必须安装易语言的4.0或以上版本。必须安装 Grid++Report 报表组件,可以去 https://www.sodocs.net/doc/db14122546.html,下载最新的 Grid++Report。为了顺利完成本教程,你应该将 Grid++Report 安装在 C:\Program Files\Grid++Report 3 目录下。 教程包括以下内容: ?第一节:创建报表模板 ?第二节:配置 Grid++Report 在易语言中的使用 ?第三节:实现报表打印与打印预览 ?第四节:实现报表在查询显示控件中显示 第一节:创建报表模板 ?创建一个空白的报表模板 1.从 Windows 桌面执行‘开始->程序->Grid++Report 3.6->Grid++Report 报表设计器’启动报表 设计器应用程序。 此时一个空白的报表模板创建在报表设计器应用程序中。 ?定义报表头

ReportViewer控件最简单教程-Xieris

教程题目:使用Report Viewer控件制作报表。 环境:WIN7,VS2012, 代码:https://www.sodocs.net/doc/db14122546.html,。 需要元素(项目右击可添加这些项): Default.aspx Web窗体 Reoport.rdlc 报表 DataSet.xds 数据集文件(报表需要它规定格式) 需要实现效果: 1、能成功简单显示报表 2、使用list集合填充 3、使用DataTable填充 效果如下: 实现步骤: 基础: 1个button,1个report viewer(rv1)控件,直接从工具栏拖至页面即可。 右击项目,添加报表文件(Report.rdlc),双击报表文件,工具栏的控件会变成报表工具。Button事件(点击时显示报表):btn_Click.

代码如下: public void btn_Click(object sender, EventArgs e) { /*先清空原来数据集*/ rv1.LocalReport.DataSources.Clear(); /*设置报表文件*/ rv1.LocalReport.ReportPath = "Report.rdlc"; /*数据集的填充,效果2-3才需要*/ ReportDataSource rds = new ReportDataSource("DataSet1", loadData3()); /*将数据集添加到本地报表,效果2-3才需要*/ rv1.LocalReport.DataSources.Add(rds); /*刷新报表显示*/ rv1.LocalReport.Refresh(); } 加蓝色的代码,实现效果时需要改的,记住。 实现效果1: 打开Report.rdlc文件,从工具栏拖两个文本框,一个内容为hello,一个内容为world。 右击Default.aspx,选择浏览,这时,可以看见:

利用Reportviewer生成RDLC报表

利用ReportViewer生成RDLC报表 报表是应用程序,特别是数据库系统中的重要功能。在Visual Studio 2010中,自带的ReportViewer控件,可以满足常用报表功能的实现,而且使用方便,以下就将介绍利用VS2010中的ReportViewer控件创建RDLC报表,并在winform程序中调用的实例,使用C#语法。 第一步:创建一个Windows应用程序 在Visual Studio 2010中,选择“文件”菜单,新建-“项目”,从已安装模板中选择Visual C#,从中间的项目类型中,选择“Windows窗体应用程序”;在名称栏中,为项目指定名称;在位置栏中,指定想要保存的目录。完成之后,项目中会有一个Form1,以下从对它的窗体设计器开始讲解。 像下面这样修改Form1的属性,当然也可以保留默认属性: Form1.Text = "MS Reporting Services 101 with Smart Client" Form1.Size = 750, 300 第二步:为窗体(Form)添加报表查看器(Report Viewer) 报表查看器,我们可以把它理解为显示和预览报表的容器。它不仅可预览输出报表,还可帮助将报表信息生成各种格式(PDF或Excel等等),当然也包括打印功能。 请按如下步骤在Form1上放置好报表查看器控件: 依次找到工具箱(ToolBox)――报表--报表查看器(ReportViewer),并把它拖到Form1上。这会创建一个名为reportViewer1的新实例。 通过设置reportViewer1.Dock = Fill,报表查看器将会填充窗体的整个区域,以显示报表。 在完成第一步与第二步之后,窗体看起来应该如图1所示: 图1 第三步:为项目添加数据集(DataSet) 数据集是伴随报表查看器而来的,它保存并提供从数据源而来的原始数据,我们便可对这些原始数据进行处理或在C#程序中输出。

reportviewer教程

打开Visual Studio后,选择"文件"—>"新建项目",打开新建项目对话框: 打开新建项目对话框后,在“项目类型”中选“Visual Basic"中的Windows: (也可在“项目类型”中选其它语言中的“Visual C#") 再在模板中选"Windows 应用程序",并在名称中输入名称"ReportViewerTest":

按确定后,显示Form的设计画面: 将工具箱中ReportViewer拖入至Form1中,将Form1适当的调大一点:

这样就在Form1上创建了一个默认名为"ReportViewer1"的控件,这个控件 就是用来浏览报表的控件。 (如果是用C#语言就创建了默认名为"reportViewer1"的控件,是第一个字母的大小写有区别)点击"ReportViewer1",在它的右上角出现了一个小三角形: 点击右上角的小三角形,点选"在父容器中停靠": 出现以下画面:

打开解决方案资源管理器(按Ctrl+Alt+L或在菜单->视图->解决方案资源管理器): 右击这个项目名称"ReportViewerTest",在出来的菜单上选: 添加->新建项,如下图所示:

在添加新项对话框中选"报表",名称就用默认的Report1.rdlc: 再点添加后,出现Report1.rdlc的设计画面:

选择工具箱中报表项下的"表",将"表"拖到Report1.rdlc设计窗体中: 将"表"拖到Report1.rdlc设计窗体中后,会自动生成“table1" 表,如下图: 红框以内就是"table1" 表。 在红框以内是报表的空白区:

VS2010_RDLC自带报表使用手册.

RDLC使用总结 1、为什么要使用RDLC报表(简介) VS .NET开发中,用什么进行报表设计?可能的回答是Crystal Report,当然,必须承认Crystal Report的功能还是非常强大的,被Business Object收购以后,商业的成分也在逐渐增加,也形成了一定规模的用户群。 Visual Studio .NET进入2005版本以后,Crystal Report与IDE的结合更“紧密”了,至少我们看不到那个讨厌的注册窗口了。但是,Microsoft似乎并不容忍在自己的超级工具中竟然没有报表工具,于是Report Viewer Control出现了,我把它的报表称为RDLC报表。 在VS .NET 2005之前,SQL Server Reporting Services中已经提供了一种被称为报表定义语言(Report Definition Language, RDL)的语言;在VS .NET 2005中,Microsoft提供了针对这种报表的设计器,并提供了在WinForm和WebForm中使用这种报表的能力。Microsoft将这种报表的后缀定为RDLC,RDL仍然是Report Definition Language的缩写,那么C代表什么呢?C代表Client-side processing,凸显了它的客户端处理能力。 这种报表的易用性和可定制性让我们完全有理由放弃Crystal Report,让我们来看看它的强大功能吧: 1)简单易用的控件,特别是Table控件,非常方便字段在报表上的排列; 2)灵活的可定制性,用XML来描述一个报表相关的一切,不用说了吧; 3)高度可编程性,在你的项目中,甚至不需要有一个报表文件,通过代码就可以实现报表生成、预览和打印等一系列操作; 4)支持DrillThrough数据钻取功能; 5)导出的Excel文件格式非常完美,而且并不需要安装Excel; 6)数据源处理极其方便,开发人员可以自己接管数据库连接、取数,然后将数据结果赋值给RDLC的数据集即可。 7)展示和数据分离,程序员更是可以编写一个RDLC设计器交有用户使用,这样用户就可以自行设计RDLC报表格式,程序员只负责定制数据接口即可。 RDLC MSDN:https://www.sodocs.net/doc/db14122546.html,/zh-cn/library/ms251671(VS.80).aspx 2、RDLC简单Demo 本文所有RDLC例子都是基于VS2005 C#,所有ReportViewer的处理模式都是Local模式。本报表Demo显示上文中提到的RDLC手册各节内容,下述为Demo的详细steps。 1)新建项目,选择Windows应用程序项目类型,输入工程名称RDLCDev; 2)修改Form1窗体名称为FrmRdlcUserGuide,在工具箱—>数据Tab选项卡中选择ReportViewer控件,将其拖入到FrmRdlcUserGuide,默认命名为reportViewer1,调整ReportViewer控件的大小和布局; 3)在解决方案资源管理器中选择RDLCDev工程,鼠标右击RDLCDev工程,添加新建

RDLC报表详细讲解与分析报告

RDLC报表随笔…… (,感谢网友”蜡人”) (一) VS .NET开发中,用什么做报表? 可能的回答是Crystal Report,自.NET“紧密”集成Crystal Report后,这可能是开发人员比较单一的选择。但是,这种集成似乎并不非常紧密,网络上充斥着关于使用Crystal Report的抱怨,太复杂也许是其最为令人诟病的地方,自定义性比较差也不能为程序员们所容忍。 当然,必须承认Crystal Report的功能还是非常强大的,被Business Ob ject收购以后,商业职能的成分也在逐渐增加,也形成了一定规模的用户群。 Visual Studio .NET进入2005版本以后,Crystal Report与IDE的结合更“紧密”了,至少我们看不到那个讨厌的注册窗口了。但是,Microsoft似乎并不容忍在自己的超级工具中竟然没有报表工具,于是Report Viewer Control出现了,我把它的报表称为RDLC报表。 在VS .NET 2005之前,SQL Server Reporting Services中已经提供了一种被称为报表定义语言(Report Definition Language, RDL)的语言;在VS .NET 2005中,Microsoft提供了针对这种报表的设计器,并提供了在WinForm和WebForm中使用这种报表的能力。Microsoft将这种报表的后缀定为RDLC,RDL仍然是Report Definition Lan guage的缩写,那么C代表什么呢?C代表Client-side processing,凸显了它的客户端处理能力。 这种报表的易用性和可定制性让我们完全有理由放弃Crystal Report,让我们来看看它的强大功能吧: 1、简单易用的控件,特别是Table控件,非常方便字段在报表上的排列; 2、灵活的可定制性,用XML来描述一个报表相关的一切,不用说了吧? 3、高度可编程性,在你的项目中,甚至不需要有一个报表文件,通过代码就可以实现报表

VS2010报表ReportViewer数据的生成

VS2010报表ReportViewer数据的生成-添加程序运行过程中生成表字段与参数 开发环境:vs2010 报表工具:ReportViewer.exe 这个要另外安装 开发说明: 由于在开发、运行过程中,会生成一些汇总统计表,这样的表不一定会以数据库表的形式固定存在,因此,会以运行过程中,用DataSet\DataTable、参数的方式传递给ReportViewer。 关键点: 1、ReportViewer在制作报表时,要生成用户数据,需要添加数据表,在制作过程中,调用该表。但,如果该表是通过参数传递过来,会无法读取该表,因此,需要手工添加一个临时表给它。

2、临时表生成,解决,添加新建项方案中,添加新建项,数据-数据集,工具栏,添加table,再添加键,生成一个可供调用的临时表。 3、VS2010在制作表过程中,菜单会出现在两个地方,一个在主菜单出现,下拉后内容极少,不包括数据参数,一个在【视图】中,打开,在工具栏会出现数据参数等更多内容。

4、有了临时表、参数,就可以布局制作报表了,统计时间是数据参数传递的。

5、统计表的数据传输与参数参数程序 注:传递数据表 Microsoft.Reporting.WinForms.ReportDataSource r = new Microsoft.Reporting.WinForms.ReportDataSource(); https://www.sodocs.net/doc/db14122546.html, = "my_dt"; r.Value = da; 传递的表名称要与设计时的名称一致。

this.reportViewer1.LocalReport.DataSources.Clear(); this.reportViewer1.LocalReport.DataSources.Add(r); 传递参数 ReportParameter p = new ReportParameter("dt", dt); this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { p }); _ds是通过中间层传输过来。 【参考代码】 private void bt_Sum_Class_Click(object sender, EventArgs e) { string dt = this.dateTimePicker1.Value.ToString("yyyy年MM月dd日") + " -至-" + this.dateTimePicker2.Value.ToString("yyyy年MM月dd日"); this.lb_title.Text = "[" + this.dateTimePicker1.Value.ToString("yyyy-MM-dd") + "]至[" + this.dateTimePicker2.Value.ToString("yyyy-MM-dd") + "]" + this.bt_Sum_Class.Text; DataSet _ds = gl.DecompressGetBytes(gl.BL.Get_Sum_Between_Classified_Zip(this.dateTimePicker1.Value, this.dateTimePicker2.Value)); DataTable da = _ds.Tables[0]; this.dataGridView1.DataSource = _ds.Tables[0]; this.dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); for (int i = 1; i <= this.dataGridView1.Columns.Count - 1; i++) {

C#报表控件ReportViewer

C#报表控件ReportViewer rdlc 例(1) 启动VS2005新建一个窗体项目,命名为TestProj 在左边的窗体内选择“添加新数据源”或在菜单上操作“添加新数据源”: 选择后出现对话窗体,选择“数据库”,进入“下一步”:

本数据源以SqlServer2000所提供的Northwind数据库为例,因此在数据库内选择驱动程序为SqlServer,具体操作视所用数据库而定(如果连接为Oracle,建议用Oracle所提供的ODP for .NET,地址: https://www.sodocs.net/doc/db14122546.html,/technology/global/cn/software/tech/windows/odpnet/index.html)。 选择数据源后,指定数据库文件,并进行测试,如果连接不通,请检查你的软件设置。

进行下一步,至显示出库文件内的表及视图,然后打开表,并选择其中的Employees,选择完成。

在数据源窗口中显示出所选择表及表内的字段,以备使用。

同时在资源管理器中,也可以看到新增加的数据文件。 2 报表浏览器 在新建的窗体内,放入报表浏览控件:

此报表浏览控件集成了报表查看及打印预览的功能,可直接输出至打印机,也可直接输出至Excel文件或PDF文件,对于喜欢看Excel表格的客户来说,这个报表控件非常不错。关于此报表的来源及台前幕后的各种说法,请自己查询相关的网站。 3 建立报表文件 选中报表浏览器控件后,在控件的右上角会出现一个小三角,点击后,出现一个菜单,选择“设计新报表”或在解决方案资源管理器中添加一个新的报表文件: 双击“报表项”内的“表”,则设计空白表内生成一个表格,我们可以在表格内添加数据项。 此报表的设计方式类似于MS以前的VB下报表设计环境。在报表设计器中,我将一份报表分为五个部分,从上至下为:报表标题区、列标题区、数据显示区、合计及页脚。如果将报表的设计形式显示出页眉及页

winform水晶报表基础操作从入门到精通

水晶报表基础操作从入门到精通 1、水晶报表注册码 在使用https://www.sodocs.net/doc/db14122546.html,自带的水晶报表时,请注册,否则只能使用30次,水晶报表注册码如下:注册号:6707437608 密码:AAP5GKS0000GDE100DS 2、https://www.sodocs.net/doc/db14122546.html,中使用水晶报表 我们采用下面的几步使用Push模式执行水晶报表: 1)设计一个DataSet 右击“解决方案浏览器”,选择“添加”--“添加新项”-->“数据集”,从“服务器资源管理器”中的“SQL Server”中拖放“Stores”表(位于PUBS数据库中)。再将此表拖入数据集中。而.xsd文件中仅仅包含一个结构图,但是不会有任何数据在里面。 2)创建一个.rpt文件同时将其指定给上一步建立的DataSet。 使用上面的介绍过的方法创建此文件,唯一的不同就是使用数据集来代替前面的直接连接数据。建立.rpt文件之后,右击“详细资料”-->“添加/删除数据库”,在”数据库专家“窗口中,展开”项目数据“(代替以前的OleDb),展开“https://www.sodocs.net/doc/db14122546.html,数据集”--“DataSet1”,选择“Stores”表。将“Stores”表添加到“选定的表”中,点击“OK”。 3)在aspx页面中拖放一个CrystalReportViewer控件同时将其与前面的rpt文件建立联系。使用PULL模式下的方法,建立一个WebForm,添加一个Crystal Report Viewer 控件,并设定其属性,此处与PULL模式下是一致的。代码如下: private MyReport oCR;//MyReport为MyReport.aspx.csk中的类名 private void Page_Load(object sender, System.EventArgs e) { DataSet1 ds = new DataSet1(); oCR = new MyReport(); SqlConnection MyConn = new SqlConnection(ConfigurationSettings.AppSettings["SqlConn"]); MyConn.Open(); //直接访问数据表 //string strSel = "select * from tbtree"; //SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,MyConn); //MyAdapter.Fill(ds,"tbtree"); //使用存储过程 SqlCommand cmd = new SqlCommand("display", MyConn); https://www.sodocs.net/doc/db14122546.html,mandType = CommandType.StoredProcedure; SqlDataAdapter MyAdapter = new SqlDataAdapter(cmd); MyAdapter.Fill(ds,"tbtree"); oCR.SetDataSource(ds); this.CrystalReportViewer1.ReportSource = oCR; this.CrystalReportViewer1.DataBind();

真正地全动态报表RDLC和ReportViewer

阅读本文需要有XML解析及https://www.sodocs.net/doc/db14122546.html, 相关经验。 本文编译器使用Visual Studio 2005数据库采用XML格式ReportView 版本为https://www.sodocs.net/doc/db14122546.html, 版本为2.0 一、水晶报表的缺陷 Crystal Repotrs的功能固然很强大,但是对我们写程序的人来说,是否支持动态生成才是最重要的。如果报表只能静态生成再嵌入到程序中,实在有些没意思。 不巧的是强大的水晶报表这一点做的很不好,我们可以在程序中动态修改数据源,也可以动态修改文本和字段,但是报表的一大特色,数据图表,却只能静态生成。也就是说,假如我设计报表时添加了一个图表,用户希望能在多个字段中选择自己想显示的,动态显示到图表中,水晶报表就做不到。对它来说,我们至多只能在程序中得到一张位图,这样就没有意义了。 这个时候我发现了ReportViewer,它用来显示RDLC语言表述的报表。RDLC最初被用在SQL Server for XML上。它实际上是一个XML文本,这就意味着我们在程序中很容易更改它的构架。ReportViewer是RDLC的浏览器,本身没什么好说的,需要注意的是它的数据源必须是DataTable对象。 二、结构模型 猛的一看有点复杂呵呵,其实还是挺简单的。 数据源 可以是传统数据库,也可以是XML表格 Data Adapter 及Connection 等 用来连接传统的数据库

DataSet 用来存储数据,同时可以直接操作XML文件 BindingSource 利用DateSet来填充BindingSource,这一步数据中转逻辑上有点多余,但是必不可少ReportDataSource 利用BindingSource来填充ReportDataSource,......-_-!! ReportViewer 利用ReportDataSource填充的数据及指定给它的RDLC报表文件来显示报表 三、示例代码 请大家注意: 1.这里我呈现给大家的只是如何实现报表,报表本身的制作及RDLC描述语言不在讨论范围。https://www.sodocs.net/doc/db14122546.html,同样不在讨论范围,感兴趣的读者可以参考这篇文章:《用VC轻松实现https://www.sodocs.net/doc/db14122546.html,》。 2. 如果按照MSDN上介绍的步骤,可以在VB或C#等语言中实现报表显示,但不能用在VC中,因为向导可能产生中文变量,而VC目前还不支持中文变量。请使用VC的读者按照我介绍的步骤来实现。 1.制作报表 新建一个空项目,在解决方案资源管理器中右键点项目名,添加新建项,找到Report,起个名字,点确定。 具体的制作不在这里说了,请参考相关的文章,或者下载我的示例代码,里面有两个做好的报表文件。 2.制作XML数据库文件 https://www.sodocs.net/doc/db14122546.html,连接传统数据库这里就不多说了,参见上面那篇链接文章。 方法1: 安装了SQL Server for XML的话,直接建立数据库模型生成XML文件即可。 方法2: 如果没有安装SQL Server for XML,需要绕个弯子: 1.先使用SQL Server 或其他数据库建立传统的数据库模型。 2.写个临时程序,利用https://www.sodocs.net/doc/db14122546.html,将数据库模型导入DataSet中。 3.利用DataSet::WriteXml("文件名");的方法生成XML数据库文件。 方法3: 同样没有安装SQL Server for XML时: 1.先写一个程序,在DataSet中建立数据库模型,当然编程建立要比方法1中的向导建立麻烦一些。 2.利用DataSet::WriteXml("文件名");的方法生成XML数据库文件。 3.连接数据库 https://www.sodocs.net/doc/db14122546.html,不再多说。 //连接XML文件 DataSet^ DateSet1 = gcnew DataSet(); DataSet1->ReadXml("XML文件");

ReportViewer教程

ReportViewer教程(1)-新建工程,添加Form和报表浏览器打开Visual Studio后,选择"文件"—>"新建项目",打开新建项目对话框: 打开新建项目对话框后,在“项目类型”中选“Visual Basic"中的 Windows: (也可在“项目类型”中选其它语言中的“Visual C#") 按确定后,显示Form的设计画面:

将工具箱中ReportViewer拖入至Form1中,将Form1适当的调大一点: ReportViewer教程(2)-添加空报表Report1.rdlc 这样就在Form1上创建了一个默认名为"ReportViewer1"的控件,这个控件 就是用来浏览报表的控件。 (如果是用C#语言就创建了默认名为"reportViewer1"的控件,是第一个字母的大小写有区别)点击"ReportViewer1",在它的右上角出现了一个小三角形:

点击右上角的小三角形,点选"在父容器中停靠": 出现以下画面: 打开解决方案资源管理器(按Ctrl+Alt+L或在菜单->视图->解决方案资源管理器):

右击这个项目名称"ReportViewerTest",在出来的菜单上选: 添加->新建项,如下图所示: 在添加新项对话框中选"报表",名称就用默认的Report1.rdlc: 再点添加后,出现Report1.rdlc的设计画面:

选择工具箱中报表项下的"表",将"表"拖到Report1.rdlc设计窗体中: 将"表"拖到Report1.rdlc设计窗体中后,会自动生成“table1" 表,如下图: 红框以内就是"table1" 表。

WinForm+VS2005下ReportViewer的自动打印原码

WinForm+VS2005下ReportViewer的自动打印原码 using System; using System.Collections.Generic; using https://www.sodocs.net/doc/db14122546.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using ControlLib; using System.Drawing.Printing; using Microsoft.Reporting.WinForms; using System.IO; using System.Drawing.Imaging; namespace ReportLib { public partial class CrystalForm : Form { private string _reportname = ""; private DataSet _datasource = null; private string _autoprint = ""; private IList m_streams; private int m_currentPageIndex; public CrystalForm(string reportname,DataSet datasource,string p1) { _reportname = reportname; _datasource = datasource; _autoprint = p1; InitializeComponent(); } private void CrystalForm_Load(object sender, EventArgs e) { this.reportViewer1.LocalReport.ReportEmbeddedResource = _reportname; this.reportViewer1.LocalReport.DataSources.Clear(); if (_datasource != null) { foreach (DataTable table in _datasource.Tables) { this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource(table.TableName, table)); } } this.reportViewer1.RefreshReport(); if(_autoprint=="1") { PPrint(); } } #region报表自打印 public void PPrint() { try { LocalReport report = this.reportViewer1.LocalReport; Export(report); m_currentPageIndex = 0; NBPrint(); if (m_streams != null) { foreach (Stream stream in m_streams) stream.Close(); m_streams = null; } } catch (Exception ex) {

VS2010建立使用水晶报表教程

首先下载安装水晶报表插件 1)SAP Crystal Reports, version for Visual Studio 2010 - 包括了报有DLL的水晶报表文件 2)SAP Crystal Reports, version for Visual Studio 2010 - 水晶报表部署时用到的文件 3)SAP Crystal Reports runtime engine for .NET Framework 4 (32-bit) 只支持32位系统的包 4)SAP Crystal Reports runtime engine for .NET Framework 4 (64-bit) 安装完成之后,用VS2010新建一个web应用程序或者网站项目,之后在项目里面添加一个水晶报表文件

之后新建表格成功 之后在项目里添加一个实体类public class demo { public demo() { }

public demo(string id, string name) { this.id = id; https://www.sodocs.net/doc/db14122546.html, = name; } private string id;//编码 public string Id { get { return id; } set { id = value; } } private string name;//名称 public string Name { get { return name; } set { name = value; } } } 之后打开刚才新建的水晶报表,找到下图所示

点击确定即可,之后按照箭头所示,拖动字段。 之后新建参数字段:

水晶报表教程

水晶报表是一个功能强大的报表工具,现在已经被Microsoft Visual Studio 2005(下文以VS2005简称)集成在一起。喜欢水晶报表的朋友可以方便使用了。我把水晶报表在vs2005的使用方法总结一下,供大家参考。 首先介绍一下我用的软件环境:Microsoft Visual Studio 2005;Microsoft SQL Server 2005 【数据用例】 服务器:SQLEXPRESS 数据库名:Test 数据库表:T 【说明】 水晶报表在应用时分两种方法,分别是拉模式(PULL)、推模式(PUSH)。拉模式:在水晶报表生成时的数据源是从水晶报表文件中的SQL语句从数据库中提取的,在编程时不用重写SQL语句,但要加上登录信息(具体方法,后面介绍)。推模式:在水晶报表生成时的数据源,是用编程时重写水晶报表中SQL 语句而生成的dataset对像。也就是说,推模式是用dataset组装水晶报表。 水晶报表组件介绍。水晶报表在VS2005中有两种组件,在WEB项目是分别是CrystalReportSource,CrystalReportViewer。在FORM项目里是分别是crystalReport,CrystalReportViewer。 CrystalReportSource,crystalReport是水晶报表的数据提供者;CrystalReportViewer是水晶报表的浏览器。另外还要介绍一下水的报表的文件是以rpt为扩展名的文件,该文件可以用VS2005生成。 下面分别介绍具体操作方法: 拉模式(PULL): 在拉模式中如要在水晶报表中的SQL语句加上条件参数时要用{?参数名}方式给出。例:“Select T1, T2, T3 FROM T Where T1=''{?parm}''” parm就是参数名 以下例子中所用到的水晶报表文件中使用的SQL语句是“Select T1, T2, T3 FROM T Where T1=''{?parm}''” parm就是参数名。 【WEB方式下】 using CrystalDecisions.Shared; using CrystalDecisions.CrystalReports.Engine; ///

///功能:拉模式提取水晶报表 ///个人主页:https://www.sodocs.net/doc/db14122546.html,/ /// /// /// protected void Button_pull_Click(object sender, EventArgs e) { // CrystalReport.rpt是水晶报表文件的名称;CrystalReportSource1是从工具箱加到页面上的水晶报表数据源对像。 CrystalReportSource1.ReportDocument.Load(Server.MapPath("Crystal Report.rpt"));

CrystalReportViewer1

申请者姓名:学位点名称:研究方向:申请项目名称: 研究生科研创新项目申请表 所在学校: 桂林电子科技大学 魏延恒 桂林电子科技大学网络优化 下一代overlay 多速率视频组播系统优化研究 广西壮族自治区学位委员会广西壮族自治区教育厅2013年10月21日

职称/职务 性别 姓名年龄最具代表性的成果在课题组中承担的任务 魏延恒男硕士研究生 在读 23 1.以第二作者撰写教材《OMNeT++网络 仿真》(所负责部分15万字) 2.完成论文《A Novel Gossip-based Multirate Overlay Multicast Strategy》(已投稿ICC会议) 3.完成 论文《基于gossip算法的overlay组播 负载均衡机制》拟投稿 新型overlay拓扑结构设 计、OMNeT++仿真模型实现 屈宇清男硕士研究生 在读 23 1. 论文《A New Energy-efficient Transmission Scheme Based Ant Colony Algorithm for Wireless Sensor Networks》(ChinaCom2013已 录用) 2. 申请专利《基于蚁群算法的高能效 无线传感器网络路由方法》(已受 理) 负载均衡算法设计、OMNeT++仿真实现 劳保强男硕士研究生 在读 24 1.参与并完成了基于熔岩地质下的无 线传感器网络设计与实现项目,参与 基于chirp超宽带系统发射机与接收机 的硬件实现项目工作; 2.完成论文《近程微波全息成像的仿 真分析》拟投稿。 算法仿真实现 呼金亮男硕士研究生 在读 26 1.参加国家基金项目一项《多跳无线 网络位置感知与能效优化》,形成论 文《蜂窝网中基于能量感知的内容协 作分发算法》初稿。 2.仔细研读了Dimitri P. Bertersekas撰写的《Nonlinear Programming》一书,对优化算法和优 化理论有一个深刻的理解并将其能熟 练应用于各种优化模型中。 算法设计、仿真实现 黄海琴女硕士研究生 在读 24熟练掌握排队论理论速率分配算法设计 项目概况 项目名称 项目类别 学科专业代 码 研究方向 社会科学项目 自然科学项目 申请经费万元 学科专业名 称 起止年限 是否重点学 科 至 国家级 自治区级 课题组成员简介 下一代overlay 多速率视频组播系统优化研究 2014年1月 2014年12月 3.0 081001通信与信息系统 网络优化

相关主题