第 21 章 .net 报表设计

55
http://www.wenyuan.com.cn/webnew/ 21 21 .NET .NET 第第第第 第第第第 时时时 (: 1.5 时时3 时时

Upload: lilith

Post on 13-Jan-2016

201 views

Category:

Documents


0 download

DESCRIPTION

第 21 章 .NET 报表设计. (时间: 1.5 次课, 3 学时). 第 21 章 .NET 报表设计. 在信息系统开发过程中,报表的制作是项目成功的关键,它给管理者提供了可视化的信息呈现方式,可以通过图形、表格等各种形式描述数据特征。本章介绍 .Net 项目开发过程中利用 OWC 组件、 SQL Server Reporting Services 以及 Crystal Reports 制作报表的技术。 本章教学目的: 学会使用 OWC 组件制作简单的报表 掌握 SQL Server Reporting Services 报表技术 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

第第 2121 章 章 .NET.NET 报表设报表设计 计

(时间: 1.5 次课, 3 学时)

Page 2: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

第第 2121 章 章 .NET.NET 报表设计 报表设计 在信息系统开发过程中,报表的制作是项目成功的关键,它给管理者提

供了可视化的信息呈现方式,可以通过图形、表格等各种形式描述数据特征。本章介绍 .Net 项目开发过程中利用 OWC 组件、 SQL Server Reporting Services 以及 Crystal Reports 制作报表的技术。

本章教学目的: 学会使用 OWC 组件制作简单的报表 掌握 SQL Server Reporting Services 报表技术 掌握 Crystal Reports 报表技术

Page 3: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

第第 2121 章 章 .NET.NET 报表设计报表设计 21.1 OWC组件 21.2 SQL Server Reporting Services 21.3 Crystal Reports

Page 4: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1 OWC21.1 OWC 组件组件 21.1.1 OWC组件概述 21.1.2 OWC组件的内部控件 21.1.3 OWC组件应用示例 21.1.4 Spreadsheet控件使用语法参考

Page 5: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1 OWC21.1 OWC 组件组件

Page 6: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.1 OWC21.1.1 OWC 组件概述组件概述 OWC(Office Web Component) 是 Microsoft Office 中的一组用于发布电子数

据表、数据透视表和图表的 COM 控件,它可以从 Microsoft 网站免费下载。 OWC 组件拥有 Microsoft Excel 的基本功能。在 Internet Explorer 浏览器中

使用 OWC 组件,可以实现在 Web 中显示和处理数据,如对数据进行排序和筛选、输入新的数值、展开和折叠明细数据、旋转行列数据等,从而可查看不同形式的源数据汇总信息。

OWC 组件提供开放的编程接口,可在 ASP 、 ASP.NET 、 C#.net 、 VB.net 、Java 、 PHP 中使用 OWC 组件。利用 OWC 组件可以构建基于 Web 或者 Windows 的 Microsoft Excel 格式的报表。

使用 OWC 组件时,仅需安装 OWC 组件,不需安装 Microsoft Office 软件,便可以在应用程序中使用与 Microsoft Excel 一样的功能。不同的 Office 版本配置不同的 OWC 组件,常见的 OWC 版本有 3 种: OWC 9.0 、 OWC 10.0 、 OWC 11.0 ,表 21.1 给出了 OWC 版本与 Office 版本的对应关系。如无特殊说明,本教程所使用的 OWC 组件的版本为 OWC 10.0, 对应 Office 的版本是 Microsoft Office XP 。

Page 7: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.1 OWC21.1.1 OWC 组件概述组件概述

OWC 版本 Office 版本OWC 9.0 Microsoft Office 2000

OWC 10.0 Microsoft Office XP(2002)

OWC 11.0 Microsoft Office 2003

表 21.1 OWC 版本与 Office 版本对应关系

Page 8: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.2 OWC21.1.2 OWC 组件的内部控件组件的内部控件 常用的 OWC 组件可以内嵌以下 4 种控件以实现不同格式报表。 (1) Spreadsheet 控件:电子表格控件。可在 Web 中提供类似 Excel

的功能。 (2) Chart 控件:图表控件。可使 Web 页面具有图表功能。 (3) PivotTable 控件:数据透视表控件。用于呈现 OLAP 多维数据集,

允许用户通过向 Web 页添加排序、分组、筛选、分级和其他数据处理功能实现多维数据分析。

(4) Data Source 控件:数据源控件。可为 OWC 组件内嵌的其他控件提供数据访问能力。

以下是各个控件的具体说明。

Page 9: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.2 OWC21.1.2 OWC 组件的内部控件组件的内部控件 1 . Spreadsheet 控件 Spreadsheet 控件是 OWC 组件的电子表格控件,它能够在 Web 中提供类似

Excel 的功能。使用 Spreadsheet 控件可以产生一个完整的电子表格,并将其发布到Web 页,如图 21.1 所示。数据发布以后 Spreadsheet 控件不但能将数据呈现出来,而且有很多类似 EXCEL 的计算公式供用户使用。

当包含数据的单元格区域从 Excel 中发布时, Spreadsheet 组件将自动使用这些数据进行填充。也可以使用数据通过编程来填充 Spreadsheet 控件,具体用法请参考 21.1.3 OWC 应用示例。

Spreadsheet 控件在 Internet Explorer 中提供如下功能。 支持 Excel 中的大部分功能 重新计算引擎 简单的电子表格用户界面 基本的电子表格格式 数据排序 自动筛选 多重撤消

Page 10: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.2 OWC21.1.2 OWC 组件的内部控件组件的内部控件

图 21.1 显示在 Internet Explorer 中的 Spreadsheet 控件

Page 11: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.2 OWC21.1.2 OWC 组件的内部控件组件的内部控件 2 . Chart 控件 Chart 控件 OWC 组件内的图表控件,能够在 Internet Explorer 中提

供 Microsoft Office 的图形功能。如图 21.2 所示,当 Chart 控件在 Internet Explorer 中发布以后,可以生成各种柱状图、饼状图以及曲线走势图。如果在同一个 Web 页内同时包含 Chart 控件和 PivotTable控件或 Spreadsheet 控件,可以将 Chart 控件和 PivotTable 控件或Spreadsheet 控件进行绑定,这样在 Internet Explorer 中查看 Chart 组件时,对 Spreadsheet 或 PivotTable 组件中数据的更改将自动显示在 Chart 组件中。

Page 12: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.2 OWC21.1.2 OWC 组件的内部控件组件的内部控件

图 21.2 显示在 Internet Explorer 中的 Chart 控件

Page 13: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.2 OWC21.1.2 OWC 组件的内部控件组件的内部控件 3 . PivotTable 控件 PivotTable 控件 OWC 组件内的数据透视表控件。使用 PivotTable 控件允许用户向 We

b 页添加排序、分组、筛选、分级和其他数据透视表的数据处理功能。 PivotTable 控件将 Excel 的列表功能 ( 排序、自动筛选和分级 ) 和数据透视表的自动汇

总功能结合到运行于 Internet Explorer 中。因此, Web 页上的数据透视表几乎等同于 Excel 工作表中的数据透视表。

数据透视表列表中的数据源可以来自 Excel 电子表格、 OLE DB 或 ODBC 数据源、 Microsoft OLE DB 提供的 OLAP 数据源。 PivotTable 组件提供如下功能。

交叉列表 ( 能够旋转行列以查看源数据的不同汇总信息 ) 浏览报表数据 动态筛选 (自动筛选、按选定内容筛选、筛选字段 ) 和排序 按行或按列分组 创建总计 有效处理大量数据或少量数据 进一步处理总计后面的明细数据 (只能处理列表数据源,不能处理 OLAP 数据源 )

Page 14: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.2 OWC21.1.2 OWC 组件的内部控件组件的内部控件 要理解数据透视表报表和列表的工作方式,应熟悉如下区域,如图 21.3

所示。 拖放区域 用于数据透视表列表中,能够将字段拖放到该区域。 筛选区域 数据透视表列表的顶端拖放区域。用于整个数据透视表列表

的筛选。在筛选区提供了所有条目的下拉选择列表。选中特定的条目将只允许该条目显示在数据区域 / 明细数据区域。

行区域 左边的拖放区域。用于行的分组。 列区域 筛选区域下面的区域。用于列的分组。 数据区域 数据透视表列表的主要部分。用于所有的总计 (求和、计数、最小值、最大值 ) 和列表。

明细数据区域 也是数据透视表列表的主要部分。用于支持明细数据的字段 (即没有应用总计功能 ) 。您可以通过单击 PivotTable 组件工具栏上的“展开 / 折叠”按钮来显示此区域。

Page 15: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.2 OWC21.1.2 OWC 组件的内部控件组件的内部控件

图 21.3 未填充的 PivotTable List 控件,显示筛选区域、列区域、行区域和汇总 / 明细区域

Page 16: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.2 OWC21.1.2 OWC 组件的内部控件组件的内部控件 4 . Data Source 控件 Data Source(DSC) 控件是数据源控件,能够为 OWC 内部其他组件提

供数据访问能力。该控件提供了数据检索、数据绑定和游标管理功能。只有在发布图表或数据透视表报表且这些组件需要绑定到数据时, Data Source 控件才会从 Microsoft Excel 中发布。在 Internet Explorer 中, Data Source 控件本身是不可见的,而且也没有在 Microsoft Excel 、 Microsoft FrontPage 或 Microsoft Access 中向它发布的选项。它主要由 Access 的数据访问页使用。

Page 17: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.3 OWC21.1.3 OWC 组件应用示例组件应用示例 OWC 组件有丰富的编程接口,可用于实现多种应用,它不但可以应用

于 Web 应用程序,还可以应用于 Windows 应用程序,利用 C# 语言通过 OWC 编程接口与 OWC 进行通信可以构建复杂的报表系统。

【例 21.1】在 Web 应用程序中使用 OWC 组件 本示例将演示如何在 ASP.Net 应用程序中使用 OWC 组件的 SpreadS

heet 控件来创建学生成绩查询的报表程序,同时实现将Web 中生成的报表导出到本地 Excel 中。本示例由以下 4 个步骤完成。

(1) 创建 Web 窗体应用程序。 (2) 向 VS.NET工具箱中添加 OWC 组件。 (3) 创建 OWC 报表 (4) 将 OWC 报表导出到本地 Excel

Page 18: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.3 OWC21.1.3 OWC 组件应用示例组件应用示例 1 .创建 Web 窗体应用程序 (1) 选择【文件】∣【新建】命令,然后选择【项目】选项。 (2) 在【新建项目】对话框中,选择【项目类型】窗格中的【 Visual

C# 项目】,然后选择【模板】窗格中的【 ASP.NET Web 应用程序】。在【位置】文本框中,键入 http://localhost/OWCWebDemo 。

(3) 单击【确定】按钮关闭对话框。 项目被添加到解决方案资源管理器中,并且 Web 窗体设计器打开。

Page 19: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.3 OWC21.1.3 OWC 组件应用示例组件应用示例 2 .向 VS.NET 工具箱中添加 OWC 组件 (1) 在【工具箱】空白处右击,在弹出的快捷菜单中选择【新建选项卡】命令,添加 OWC 选项卡。

(2) 在【工具箱】中选择新建的 OWC 选项卡,在空白处右击,在弹出的快捷菜单中选择【添加删除项】命令。

(3) 在【自定义工具箱】中选择【 COM 组件】选项卡,然后选择Microsoft Office Spreadsheet 10.0 选项,如图 21.4 所示。

Page 20: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.3 OWC21.1.3 OWC 组件应用示例组件应用示例

图 21.4 自定义工具箱

Page 21: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.3 OWC21.1.3 OWC 组件应用示例组件应用示例 (4) 单击【确定】按钮,关闭对话框。 成功添加后, Microsoft Office Spreadsheet 10.0将被添加到 OW

C 选项卡下面。如图 21.5所示。 3 .创建 OWC 报表 在【工具箱】中选择 OWC 选项卡。 选择Microsoft Office Spreadsheet 10.0 控件并将其拖到 Web 窗

体中,并将其 ID命名为 Spreadsheet1 。 打开 HTML代码视图,添加一个 Div标签代码,使该标签的 ID 为 dv ,

同时要使该 Div标签的 runat属性更改为 server ,使其可以服务器端运行,代码布局如图 21.6所示。

Page 22: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.3 OWC21.1.3 OWC 组件应用示例组件应用示例

图 21.5 添加 OWC 组件后的工具箱

Page 23: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.3 OWC21.1.3 OWC 组件应用示例组件应用示例

图 21.6    OWC 组件 HTML 代码

Page 24: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.3 OWC21.1.3 OWC 组件应用示例组件应用示例 服务器端代码如下: private void Page_Load(object sender, System.EventArgs e) { if(!IsPostBack) { // 构建数据源 DataTable dt=new DataTable(); DataRow dr; dt.Columns.Add(new DataColumn("StudentID",typeof(strin

g))); dt.Columns.Add(new DataColumn("StudentName",typeof(st

ring))); dt.Columns.Add(new DataColumn("Subject",typeof(string))); dt.Columns.Add(new DataColumn("Grade",typeof(double))); dr=dt.NewRow(); dr[0]="060101"; dr[1]="王辉 "; dr[2]="语文"; dr[3]="83"; dt.Rows.Add(dr); dr=dt.NewRow(); dr[0]="060101"; dr[1]="王辉 "; dr[2]="数学 "; dr[3]="79";

Page 25: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.3 OWC21.1.3 OWC 组件应用示例组件应用示例 dt.Rows.Add(dr); dr=dt.NewRow(); dr[0]="060102"; dr[1]=" 张亮 "; dr[2]=" 英语 "; dr[3]="91"; dt.Rows.Add(dr); StringBuilder s=new StringBuilder(); s.Append("\n<script language=\"vbs\">\n"); s.Append("Sub Window_OnLoad()\n"); s.Append("Spreadsheet1.ActiveSheet.Cells.Clear\n"); // 表头 s.Append("Spreadsheet1.ActiveSheet.Range(\"A1:D1\").Merge\n"); s.Append("Spreadsheet1.ActiveSheet.Range(\"A1\").Valu

e = \"学生成绩查询表 \"\n"); s.Append("Spreadsheet1.ActiveSheet.Range(\"A2:D2\").

Merge\n"); s.Append("Spreadsheet1.ActiveSheet.Range(\"A2\").Value =\""); s.Append(System.DateTime.Now.ToShortDateString()); s.Append("\"\n");

Page 26: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.3 OWC21.1.3 OWC 组件应用示例组件应用示例 s.Append("Spreadsheet1.ActiveSheet.Cells(3,1).Value=\"学号 \"\n"); s.Append("Spreadsheet1.ActiveSheet.Cells(3,2).Value=\" 姓名 \"\n"); s.Append("Spreadsheet1.ActiveSheet.Cells(3,3).Value=\" 科目 \"\n"); s.Append("Spreadsheet1.ActiveSheet.Cells(3,4).Value=\"成绩 \"\n"); // 内容 for(int j=0;j<dt.Columns.Count;j++) { for(int i=0;i<dt.Rows.Count;i++) { int row=i+3; int col=j+1; s.Append("Spreadsheet1.ActiveSheet.C

ells("+row+","+col+").Value="+"\""+dt.Rows[i][j]+"\""+"\n"); } } // 格式 s.Append("Spreadsheet1.ActiveSheet.Range(\"a1\"). Font.size=15\

n"); s.Append("Spreadsheet1.ActiveSheet.Range(\"a1\").font.bold=true\n"); s.Append("Spreadsheet1.ActiveSheet.Range(\"a1:a2\").VerticalAlign

ment=Spreadsheet1.Constants.xlVAlignCenter \n"); s.Append("Spreadsheet1.ActiveSheet.Range(\"a1:a2\").HorizontalAlignment=Spreadsheet1.Constants.xlHAlignCenter \n");

s.Append("Spreadsheet1.Range(\"a3:d6\").Borders.Weight = Spreadsheet1.Constants.owcLineWeightMedium \n");

s.Append("End Sub\n"); s.Append("</script\n"); dv.InnerHtml=s.ToString();} } 运行结果如图 21.7所示。

Page 27: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.3 OWC21.1.3 OWC 组件应用示例组件应用示例

图 21.7 Web 中的 OWC 报表

Page 28: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.3 OWC21.1.3 OWC 组件应用示例组件应用示例 4 .将 OWC 报表导出到本地 Excel 单击图标可以将Web 页中生成的报表导出报

本地的 Excel 中,并且打开,如图 21.8所示。

Page 29: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.3 OWC21.1.3 OWC 组件应用示例组件应用示例

图 21.8 Excel 中的 OWC 报表

Page 30: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.3 OWC21.1.3 OWC 组件应用示例组件应用示例 为 Form1_Load事件添加代码以生成报表: private void Form1_Load(object sender, System.EventArgs e) { this.axSpreadsheet1.ActiveSheet.Cells[1,1]="060101"; this.axSpreadsheet1.ActiveSheet.Cells[1,2]="王辉"; this.axSpreadsheet1.ActiveSheet.Cells[1,3]="语文"; this.axSpreadsheet1.ActiveSheet.Cells[1,4]="83"; this.axSpreadsheet1.ActiveSheet.Cells[2,1]="060101"; this.axSpreadsheet1.ActiveSheet.Cells[2,2]="王辉"; this.axSpreadsheet1.ActiveSheet.Cells[2,3]="数学 "; this.axSpreadsheet1.ActiveSheet.Cells[2,4]="79"; this.axSpreadsheet1.ActiveSheet.Cells[3,1]="060102"; this.axSpreadsheet1.ActiveSheet.Cells[3,2]="张亮"; this.axSpreadsheet1.ActiveSheet.Cells[3,3]="英语 "; this.axSpreadsheet1.ActiveSheet.Cells[3,4]="91";

}

Page 31: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.1.4 Spreadsheet21.1.4 Spreadsheet 控件使用语法参考控件使用语法参考 1.标题栏控制 2.单元格控制 3.其他属性

Page 32: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.2 SQL Server Reporting 21.2 SQL Server Reporting

ServicesServices 21.2.1 SQL Server Reporting Services

概述 21.2.2 报表制作环境 21.2.3 创建简单的报表

21.2.2

Page 33: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.2 SQL Server Reporting 21.2 SQL Server Reporting

ServicesServices

Page 34: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.2.1 SQL Server Reporting Services 21.2.1 SQL Server Reporting Services 概概述述

1 .简介 SQL Server Reporting Services 是一种新型报表平台,可用于创建和

管理各类数据库以及数据仓库所产生的报表。它与 Visual Studio.Net紧密集成,可以利用 Visual Studio.Net 开发环境创建各类报表。

Page 35: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.2.2 21.2.2 报表制作环境报表制作环境 SQL Server Reporting Services 是通过 Visual Studio.Net 2003创

建的。 Visual Studio包括了 Reporting Services创建报表所需的各种工具。从选择数据源信息、创建报表布局以及预览报表所需的所有工作都可以在 Visual Studio 中完成。

在 SQL Server Reporting Services 安装完成后, Visual Studio 会新增一个【商业智能项目 (Business Intelligence)】类型模版,如图 21.10 所示。

在【商业智能项目】类型中的项目具有【报表项目向导】和【报表项目】两种模版。

报表项目向导——通过 Report Wizard 向导创建一个完成的报表项目。 报表项目——创建一个空白的报表项目。打开报表后,需要手动指定数

据源、指定查询、对报表布局设置格式等。

Page 36: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.2.2 21.2.2 报表制作环境报表制作环境

图 21.10 新建项目

Page 37: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.2.2 21.2.2 报表制作环境报表制作环境 2 .制作环境 图 21.11 展示了 Visual Studio 中创建 Reporting Services 报表的环境。下面简要介绍 Visual Studio 用于创建报表的各种工具栏的功能。

设计 (Design)窗口 图 21.11 中间的设计窗口是创建报表的地方,数据定义和报表布局都是

在这里创建的。设计窗口有 3 个标签: 数据 可以为报表定义数据源、用查询分析器创建数据集。 布局 可以创建报表布局。单击该标签后可以利用【字段】、【工具箱】

和【属性】 3 个窗口对报表进行设计,本教程下面的小节将介绍这三个窗口的基本功能。

预览 可以看到报表的外观以及报表内的数据。使用预览功能可以看到HTML 格式的报表,也可以看到导出为其他格式的报表。

Page 38: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.2.2 21.2.2 报表制作环境报表制作环境 (2) 字段窗口 字段窗口位于图 21.11 的左上方,它提供了报表中采用的数据库字段清单。这些字段是由查询分析

器创建的数据集生成。将字段窗口中的字段拖放到设计窗口中的适当位置, Visual Studio就会将该字段添加到报表中,在预览报表的时候能够自动从数据库中读取数据信息。

(3) 工具箱 工具箱位于图 21.11左下方,它包含创建报表所需要的所有控件。利用工具箱可以将文本和图形放

到报表的适当位置。同字段窗口一样,可以利用拖放的方式把工具箱中的控件摆放到报表中。 (4) 属性窗口 属性窗口位于图 21.11 的右下方,是控制每一个报表控件特征的地方。属性窗口显示了设计窗口中

选中的报表控件的属性。在图 21.11 中,选中的是报表的主体。属性窗口的左侧列出了该报表控件的每一个属性的名称,它们是可以改变的。右边列出了这些属性的当前设置。

(5) 解决方案资源管理器 解决方案资源管理器位于图 21.11右边,用于管理 Visual Studio 中处理的所有对象,这些对象由

数型结构分级显示。 一个报表项目总是包含“共享数据源”和 Reports两个文件夹。其中“共享数据源”文件夹中包含

报表所要的各种数据源的连接,这些数据源由报表项目中的多个报表共享使用。 Reports文件包含用 Visual Studio创建的所有报表。在 Visual Studio 编辑报表的时候,设计窗

口和字段窗口每次只能显示一个报表信息。如果项目包含多个报表,双击 Reports文件中的报表可以切换它们的显示信息。

Page 39: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.2.2 21.2.2 报表制作环境报表制作环境

图 21.11 报表制作环境

Page 40: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.2.3 21.2.3 创建简单的报表创建简单的报表 创建 Reporting Services 报表应用程序一般要通过以

下几个步骤来完成。 (1) 在 Visual Studio 中创建一个新的报表项目 (2)创建一个数据源 (3)创建一个数据集 (4) 设计报表布局

Page 41: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.3 Crystal Reports 21.3 Crystal Reports

21.3.1 Crystal Reports概述 21.3.2 报表设计 21.3.3 创建简单报表 21.3.4 用CrystalReportViewer

报表查看 器承载报表

Page 42: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.3 Crystal Reports 21.3 Crystal Reports

Page 43: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.3.1 Crystal Reports21.3.1 Crystal Reports 概述概述 1 .简介 Crystal Reports 是加拿大 Crystal Decisions公司出品的专业级报表

分析与生成软件,在全球已经拥有超过 1100万的用户,是 .Net平台下使用最为广泛的报表工具之一。 Crystal Reports 集成在 Visual Studio.Net 集成开发环境之中,但是购买了 Visual Studio.Net 使用许可后,必须购买 Crystal Reports 的使用许可,才可以在软件项目中使用 Crystal Reports 。

2 .特点 Crystal Reports 通过数据库驱动程序与数据库连接。每个驱动程序都被编写为可处理特定数据库类型或数据库访问技术。

Page 44: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.3.2 21.3.2 报表设计报表设计 可在 Crystal Report Designer 中创建报表。当向项目中添加 Crysta

l Reports 对象,或双击项目中现有的 Crystal Reports 对象时, Crystal Report Designer 将自动启动。

1. 报表对象 Crystal Report Designer 使用类似于 Visual Studio .NET 的拖放方

式,即将一个报表对象拖动到设计器 ( 如数据库字段或文本对象 )上,然后使用【属性】对话框或快捷菜单格式化该对象。

可根据您的需要将一些报表对象添加到您的报表中并进行格式化,如:数据库字段、公式字段、参数字段、组名字段、运行总计字段、摘要字段、图表、子报表。

2. 报表节 Crystal Report Designer 分为若干个报表节,如报表页眉、页脚和详

细信息,可将对象拖动到某个报表节上。

Page 45: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.3.2 21.3.2 报表设计报表设计 报表页眉 放在【报表页眉】节中的对象只在报表开头输出显示一次。【报表页眉】节通常包含报表的标题和其

他希望只在报表开始位置出现的信息。放在该节中的图表和交叉表包含整个报表的数据。放在该节中的公式只在报表开始进行一次求值。

页眉 放在【页眉】节中的对象输出显示在每个新页的开始位置。【页眉】节通常包含希望在每页的顶部出

现的信息。它可以包括文本字段 ( 如章节名、文档名或其他类似信息 ) 。该节也可以用来包含字段标题。在报表中这些字段标题将作为标签显示在字段数据列的顶部。图表或交叉表不能放置在该节中。放在该节中的公式在每个新页的开始进行一次求值。

详细资料 放在【详细资料】部分中的对象随每条新记录输出显示。【详细资料】部分包含报表正文数据。批量

报表数据通常出现在这一节中。当报表运行时,【详细资料】部分随每条记录重复输出显示。例如,如果向【详细资料】部分中添加了一个数据库对象,而这个数据库对象包含 100条记录,那么报表在运行时将输出显示 100 个单独的“详细资料”部分。图表或交叉表不能放置在该节中。放在该节中的公式对每条记录进行一次求值。

报表页脚 放在【报表页脚】节中的对象只在报表的结束位置输出显示一次。该节可用来包含希望只在报表的末尾出现一次的信息 ( 如总计 ) 。放在该节中的图表和交叉表包含整个报表的数据。放在该节中的公式只在报表的结束位置进行一次求值。

Page 46: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.3.2 21.3.2 报表设计报表设计 页脚 放在【页脚】节中的对象输出显示在每页的底部。该节通常包含页码和任何其他希望出现在每页底部

的信息。图表和交叉表不能放置在该节中。放在该节中的公式在每个新页面的结束位置进行一次求值。

其他报表节 如果将组、摘要或小计添加到报表,则本程序创建另外两个节:【组页眉】和【组页脚】。当添加了

组、摘要或小计时,【组页眉】节出现在【详细资料】部分的正上方,而【组页脚】节出现在【详细资料】部分的正下方。跟原始报表节一样,每个新添加的节也可以包含一个或多个子节。默认情况下,它们都只包含一个节。

组页眉 放在【组页眉】节中的对象输出显示在每个新组的开始位置。该节通常保存组名字段,也可以用来显

示包括组特定数据的图表或交叉表。【组页眉】节在每组的开始位置输出显示一次。放在该节中的图表和交叉表仅包含本组数据。放在该节中的公式在每组的开始对本组进行一次求值。

组页脚 放在【组页脚】节中的对象输出显示在每组的结束位置。该节通常保存汇总数据 ( 如果有 ) ,也可以用来显示图表或交叉表。【组页脚】节在每组的结束位置输出显示一次。放在该节中的图表和交叉表仅包含本组数据。放在该节中的公式在每组的结束位置对本组进行一次求值。

最后完成的报表中出现的数据将因你的设计选择而定。尤其是,报表数据会因你所选择插入特定报表对象的节的不同而不同。例如,如果在【报表页眉】节中插入一个图表对象,那么该图表将只在报表开头出现一次,并汇总报表所包含的数据。或者,如果将图表对象添加到【组页眉】节中,那么每组数据的开头都将出现一个单独的图表,并汇总只与该组相关的数据。

Page 47: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.3.2 21.3.2 报表设计报表设计 3. 访问和添加数据 在 Report Designer 中,首先选择你的报表将要引用

的数据源,在一个报表中可使用一个以上的数据源。 接下来,选择要在报表中使用的数据库表。 Crystal Re

ports 可自动链接这些表,或者可以指定链接这些表的方式。将数据库表链接以使来自一个数据库的记录与来自另一个数据库的记录相匹配。

Page 48: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.3.2 21.3.2 报表设计报表设计 4. 受支持的数据源 使用 Crystal Reports for Visual Studio .NET 可以连接到并从中制作报表的数据源。 Crystal Reports 通过数据库驱动程序与数据库连接。每个驱动程序都被编写为可处理

特定数据库类型或数据库访问技术。 Crystal Reports for Visual Studio .NET 可以访问下列数据源并从中制作报表: 使用 ODBC 驱动程序的任何数据库 使用 OLEDB 提供程序的任何数据库 Microsoft Access 数据库 Microsoft Excel工作簿 ADO.NET 数据集 ADO 记录集 CDO 记录集 DAO 记录集 RDO 记录集

Page 49: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.3.3 21.3.3 创建简单报表创建简单报表 1. 使用 Crystal Report Designer 当在项目中双击现有的 Crystal report 对象或向项目中添加新报表对象时, Crystal Re

port Designer 就会自动启动。 2. 创建新报表步骤 在 Visual Studio .NET 【解决方案资源管理器】中,右击项目以显示快捷菜单。选择【添加】 |【添加新项】命令。

在【添加新项】对话框中,从【模板】区域选择 Crystal Report 。单击【打开】按钮。 在 Crystal Report 库中,选择下列选项之一: 使用报表专家——指导您完成报表的创建过程,并将您的选择添加到 Crystal eport Desi

gner 。 作为空白报表——打开 Crystal Report Designer 。 来自于现有的报表——创建新报表,它与指定的另一报表设计相同。 单击【确定】按钮。如果选择使用【报表专家】,便会出现【报表专家】对话框,并带有

数据资源管理器。为每个文件夹选择所需数据,完成【报表专家】选项卡界面上的操作,然后单击【完成】按钮来访问 Crystal Report Designer 报表。

选择【文件】 |【保存】命令,保存报表。

Page 50: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.3.4 21.3.4 用用 CrystalReportViewerCrystalReportViewer 报表查看报表查看器承载报表器承载报表

在 Windows 应用程序中承载报表包括下列步骤 ( 可选步骤用于处理 Windows 报表查看器和 / 或 Windows 应用程序的自定义情况 ) :

创建 Windows 应用程序。 向应用程序添加 Windows 报表查看器。 调整 Windows 报表查看器的属性 ( 可选 ) 。 访问 Windows 项目中的报表。 将报表绑定到 Windows 报表查看器。 与 Windows 窗体中的其他控件交互 ( 可选 ) 。 生成和运行 Windows 应用程序。 在 Windows 报表查看器中查看报表。

Page 51: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.3.4 21.3.4 用用 CrystalReportViewerCrystalReportViewer 报表查看报表查看器承载报表器承载报表

【例 21.9】在 Windows窗体报表查看器中查看报表。 接【例 21.8】,返回到 Form1窗口,用鼠标从【工具箱】中将 cryst

alReportViewer 控件拖到窗体上,如图 21.36所示。 修改 DisplayGroupTree属性为 FALSE隐藏组树 (此例中不需要组树 ) ,结果如图 21.37所示。

修改属性 ReportSource ,将我们上节制作的报表 CrystalReport1.rpt ,绑定到 crystalReportViewer 控件上。

运行程序,结果如图 21.38所示。 这就完成了简单报表的制作和如何在 Windows窗体报表查看器中查看

报表的过程。

Page 52: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.3.4 21.3.4 用用 CrystalReportViewerCrystalReportViewer 报表查看报表查看器承载报表器承载报表

图 21.36 crystalReportViewer 控件

Page 53: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.3.4 21.3.4 用用 CrystalReportViewerCrystalReportViewer 报表查看报表查看器承载报表器承载报表

图 21.37 隐藏组树的 crystalReportViewer 控件

Page 54: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

21.3.4 21.3.4 用用 CrystalReportViewerCrystalReportViewer 报表查看报表查看器承载报表器承载报表

图 21.38 报表显示结果

Page 55: 第 21 章   .NET 报表设计

http://www.wenyuan.com.cn/webnew/

Q & A?Q & A?

Thanks!Thanks!