CrystalReport水晶报表详细教程
水晶报表的使用

3.3 Pull模式的使用
首先创建rpt文件,并使用水晶报表设计接 口设置一些必须的数据连接。 拖放一个 CrystalReportViewer控件至 aspx页面,设置它的属性指定我们上一步 创建的.rpt文件。 在代码中调用DataBind方法。
创建 .rpt 文件:
1)
2) 3) 4) 5)
使用Pull模式导出报表
private void btnOutput_Click(object sender, System.EventArgs e) { CrystalReport1 myReport = new CrystalReport1(); CrystalDecisions.Shared.DiskFileDestinationOptions DiskOpts = new CrystalDecisions.Shared.DiskFileDestinationOptions(); myReport.ExportOptions.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile; myReport.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.PortableDoc Format; DiskOpts.DiskFileName = "c:\\Output.pdf"; myReport.ExportOptions.DestinationOptions = DiskOpts; myReport.Export(); }
6)
7) 8)
在右击“解决方案游览器”,在弹出的菜单中选择“添加” --“添加新项”-->“Crystal Report” 在“Crystal Report 库”中选择“作为空白报表”单选按 钮,最后单击“确定”。 出现水晶报表设计器。 右击报表中的“详细资料区”,选择“数据库”->“添加/ 删除数据库..." 在弹出的“数据库专家”中,扩展“OLE DB(ADO)”选项, 此时会弹出另外一个“OLE DB(ADO)”窗口。 在 "OLE DB (ADO)" 弹出窗口中,选择 "Microsoft OLE DB Provider for SQL Server" 然后 "Next" 指定连接的信息(选择Pubs库) 单击“下一步”,最后单击“完成”按钮。
水晶报表实验

四、 • 过使用连接共享以及限制记录集合的大小,可以使 实验作业 用
• 报表性能最大化。
5
三、实验内容及步骤
一、 实验目的
•
3.2 Pull模式的使用
• 首先创建rpt文件,并使用水晶报表设 二、 计接口设置一些必须的数据连接。
实验环境
• 拖放一个CrystalReportViewer控件至 三、 aspx 页面,设置它的属性指定我们上 实验步骤 一步创建的.rpt文件。
实验目的
•
新建Windows项目
二、 • 添加CrystalReportViewer 控件
• 实验环境 添加“选择报表”按钮
• 添加按钮响应事件
三、
实验步骤
四、 实验作业
3
三、实验内容及步骤
一、 • 实验目的 •
• • 二、 实验环境 • •
三、 • 实验步骤
•
• 四、 • 实验作业
2Web窗体中水晶报表的使用 结构 – 客户端: 客户端仅需要一个可以访问嵌入aspx页面报表的游览器就可以了
10
三、实验内容及步骤
一、 实验目的
•
3.3 使用Push模式
• 设计一个DataSet
二、 • 创建一个.rpt文件同时将其指定给上一步建 实验环境 立的DataSet。
• 在aspx页面中拖放一个CrystalReportViewer
三、 实验步骤
控件同时将其与前面的rpt文件建立联系。
• 在代码中访问数据库并把数据存入DataSet
四、 • 调用DataBind方法。
实验作业
11
三、实验内容及步骤
C#.NET下使用水晶报表

1。
第一步是添加新项CrystalReport12。
在CrystalReport1.rpt面页右键选择:”数据库” ”添加/删除数据库”出现下面对话框:然后点开OLE DB(ADO)的加号,将弹出选择数据库的对话框其中”项目数据”里面的”当前连接”显示的就是OLE DB(ADO)的连接,这样就可以将表添加到右边的”选定的表”中了(切记:不要既从”OLE DB”中选表或命令又从”当前连接”中选,如果你用了数据集,也是一样的道理,否则全提示出”登陆失败”的错误!)3。
字段资料管理器里面”数据库字段”里把字段直接拖到CrystalReport.rpt里面了.布置好布局.4。
回到WebForm1.aspx页面,选择控件CrystalReportViewer将其放到页面上。
5。
代码using CrystalDecisions.Shared;using CrystalDecisions.CrystalReports.Engine;在WebForm1.aspx.cs的Form_Load里面添加代码:TableLogOnInfo logOnInfo = new TableLogOnInfo();ReportDocument rpdMy0= new ReportDocument();logOnInfo.ConnectionInfo.ServerName = "NNN";logOnInfo.ConnectionInfo.Password="dong";logOnInfo.ConnectionInfo.DatabaseName="Lab";erID = "sa";String path = Server.MapPath("CrystalReport2.rpt");rpdMy0.Load(path);rpdMy0.Database.Tables[0].ApplyLogOnInfo(logOnInfo);CrystalReportViewer1.ReportSource = rpdMy0;其中:TableLogOnInfo类是:提供属性,以便检索和设置表连接选项.它有一个连接的属性ConnectionInfo,用来设置与数据库的连接.如上面的ServerName等.生成一个报表文档对象将前面我们做好的那个CrystalReport1.rpt赋给它.在这里要注意的是Database属性!然后把报表对象做为CrystalReportViewer1的数据源.或者,获得数据库的方法改为直接从数据库获得DataSetusing System.Data.SqlClient;using System.Collections.Specialized;string strConn=System.Configuration.ConfigurationSettings. AppSettings["DB"].ToString();using (SqlConnection conn = new SqlConnection(strConn)) {SqlDataAdapter da = new SqlDataAdapter(strSQL,conn); //strSQL是SQL语言"select * from dbo.table1"DataSet ds=new DataSet();da.Fill( ds);CrystalReport1 cr1 = new CrystalReport1();cr1.SetDataSource( ds);CrystalReportViewer1.ReportSource = cr1;}using CrystalDecisions.Shared;using CrystalDecisions.CrystalReports.Engine;在WebForm1.aspx.cs的Form_Load里面添加代码:TableLogOnInfo logOnInfo = new TableLogOnInfo();ReportDocument rpdMy0= new ReportDocument();logOnInfo.ConnectionInfo.ServerName = "NNN";logOnInfo.ConnectionInfo.Password="dong";logOnInfo.ConnectionInfo.DatabaseName="Lab";erID = "sa";String path = Server.MapPath("CrystalReport2.rpt");rpdMy0.Load(path);rpdMy0.Database.Tables[0].ApplyLogOnInfo(logOnInfo);CrystalReportViewer1.ReportSource = rpdMy0;其中:TableLogOnInfo类是:提供属性,以便检索和设置表连接选项.它有一个连接的属性ConnectionInfo,用来设置与数据库的连接.如上面的ServerName等.生成一个报表文档对象将前面我们做好的那个CrystalReport1.rpt赋给它.在这里要注意的是Database属性!然后把报表对象做为CrystalReportViewer1的数据源.或者,获得数据库的方法改为直接从数据库获得DataSetusing System.Data.SqlClient;using System.Collections.Specialized;string strConn=System.Configuration.ConfigurationSettings. AppSettings["DB"].ToString();using (SqlConnection conn = new SqlConnection(strConn)) {SqlDataAdapter da = new SqlDataAdapter(strSQL,conn); //strSQL是SQL语言"select * from dbo.table1"DataSet ds=new DataSet();da.Fill( ds);CrystalReport1 cr1 = new CrystalReport1();cr1.SetDataSource( ds);CrystalReportViewer1.ReportSource = cr1;}using CrystalDecisions.Shared;using CrystalDecisions.CrystalReports.Engine;在WebForm1.aspx.cs的Form_Load里面添加代码:TableLogOnInfo logOnInfo = new TableLogOnInfo();ReportDocument rpdMy0= new ReportDocument();logOnInfo.ConnectionInfo.ServerName = "NNN";logOnInfo.ConnectionInfo.Password="dong";logOnInfo.ConnectionInfo.DatabaseName="Lab";erID = "sa";String path = Server.MapPath("CrystalReport2.rpt");rpdMy0.Load(path);rpdMy0.Database.Tables[0].ApplyLogOnInfo(logOnInfo);CrystalReportViewer1.ReportSource = rpdMy0;其中:TableLogOnInfo类是:提供属性,以便检索和设置表连接选项.它有一个连接的属性ConnectionInfo,用来设置与数据库的连接.如上面的ServerName等.生成一个报表文档对象将前面我们做好的那个CrystalReport1.rpt赋给它.在这里要注意的是Database属性!然后把报表对象做为CrystalReportViewer1的数据源.或者,获得数据库的方法改为直接从数据库获得DataSetusing System.Data.SqlClient;using System.Collections.Specialized;string strConn=System.Configuration.ConfigurationSettings. AppSettings["DB"].ToString();using (SqlConnection conn = new SqlConnection(strConn)) {SqlDataAdapter da = new SqlDataAdapter(strSQL,conn);//strSQL是SQL语言"select * from dbo.table1"DataSet ds=new DataSet();da.Fill( ds);CrystalReport1 cr1 = new CrystalReport1(); cr1.SetDataSource( ds);CrystalReportViewer1.ReportSource = cr1;}。
Crystal Report操作说明

a. Report Header:此區內容只會顯示在報表第一頁最上面,一般都設為隱藏(Hide),隱藏方式為在Report Header按下滑鼠右鍵選擇[Hide(Drill-Down OK)]Select Data Source視窗後,點選[Browse]按鈕,畫面會出現視窗,此時選擇TTX檔案點選滑鼠右鍵會出現功能表,選擇[New]欄位輸入該參數的名稱後點選[OK]按鈕,此時Field Explorer新增的參數,如下圖此時將此參數拖拉到要放置的位址,即完成此參數的新增,稍後會說明如何透過程式傳選擇要新增的欄位拖曳到Detail 欄位內,即完成報表欄位新增Group的欄位及排序方式,之後按確定,個區塊。
Group Header內可放置GroupGroup Footer內可放置Group結束時所需顯示的資料,如小計Subtotal,Grandtotal,Summary名稱後,按確定後Subtotalubtotal 自動新增到因為是作小計的功能,所以只能選擇資料型態為Number按確定後Subtotalubtotal 自動新增到主要功能為依照欄位值及Group作資料總計、判斷最大值及最小值、統計個數等,增Group名稱後,按確定後Subtotalubtotal 自動新增到的功能主要為資料分開產生但是須顯示到同一報表上或處理時所使用,操作方如欲將入現有報表,則點選[Choose a report],然後點選[Browse]立新報表,則點選[Create a subreport],然後輸入Report Name,點選,此時畫面出現[Subreport Export]視窗,如下圖[Database]欄位,選擇要加入subreport的TTX,然後按[Add]新增。
新增完後,進行下一步,如下圖選擇要在subreport顯示的欄位,按下[Add]後新增即可,完成後按[OK]crystal report ActiveX元件:點選功能表[專案]-[設定引用項目],將[Crystal Report 8。
WinForm中使用CrystalReport水晶报表——基础,分组统计,自定义数据源

WinForm中使⽤CrystalReport⽔晶报表——基础,分组统计,⾃定义数据源开篇本篇⽂章主要是帮助刚开始接触CrystalReport报表的新⼿提供⼀个循序渐进的教程。
该教程主要分为三个部分1)CrystalReport的基本使⽤⽅法;2)使⽤CrystalReport对数据进⾏分组求和;3)CrystalReport如何使⽤⾃定义的数据源(如内存中的DataTable表)三个⽅⾯来写。
相信看懂了这个教程之后,对于⾃⼰项⽬中的实现报表这⼀功能,应该就能轻松的应对了。
⼀ CrystalReport模板的制作及显⽰A模板的制作1、右键【项⽬属性】添加⼀个⽔晶报表(在vs中需要安装CrystalReport模块,不同vs版本下载不同的CrystalReport版本:CrystalReport下载链接:)2、添加报表的设计界⾯如下:⼀个报表包括(报表头,页眉,详细资料,报表尾,页眉)5个基本部分。
3、现在我们需要给新建的报表添加⼀个数据源,右键左边的【数据库字段】选择相应的数据源,进⾏绑定。
我这⾥选择的是sqlserver数据库。
4、输⼊数据库的登录信息,然后选择需要绑定的数据库表,除了绑定数据表之外,还可以绑定sql语句查询的结果,以及存储过程和视图,下⾯给出绑定数据库表格,和绑定sql查询。
1)绑定数据库表格2)点击连接下⾯的【添加命令】绑定sql语句。
5、绑定数据库之后在报表左侧的【字段管理器】中就会出现该表以及sql查询结果的的相应表头字段。
6、把相应的字段在报表视图中进⾏布局。
到此⽔晶报表的模板已经做好了。
注意:页眉中的userName,courseName,score是可以更改。
B模板的显⽰1、⾸先在窗体上拖⼀个CrystalReportView控件作为显⽰报表模板。
2、在form_load事件⾥⾯写如下代码:CrystalReport1 cr = new CrystalReport1();//实例化⼀个报表模板this.crystalReportViewer1.ReportSource = cr;//为报表显⽰控件设置数据源3、运⾏报表设计点丑,但是你可以根基⾃⼰的风格进⾏排版设计,如字体,⼤⼩,颜⾊等啦。
水晶报表CryStalReport简单应用精选全文

可编辑修改精选全文完整版水晶报表CryStalReport使用教程(动态数据绑定)
第一步:添加水晶报表报表
1、右击鼠标,选择水晶报表
2、选择作为空白报表
第二步:添加数据集DataSet 1、右击鼠标,选择数据集
2、单击工具箱,拖拽一个DataTable到右边
3、根据数据表设计好DataTable
第三步:设计报表
1、从工具箱拖拽一个文本对象到页眉,并输入文字
2、选择字段资源管理器,右击数据库字段,选择数据库专家
3、从我的连接中选择MYDataSet到右边的选定的表
4、从左边的数据库字段中拖拽一些需要的字段到右边详细资料
5、展开特殊字段,拖拽一个第N页共M页,到页脚
第四步:添加页面
在页面中添加一个CryStalReportViewer控件
第五步、双击页面,编写数据绑定代码
protected void Page_Load(object sender, EventArgs e)
{
BLL.QueryAllStuService Qas = new BLL.QueryAllStuService();
MyCrystalReport Mcr = new MyCrystalReport();
Mcr.SetDataSource(Qas.QueryAllStudents());
CrystalReportViewer1.ReportSource = Mcr;
}
单击F5,运行效果如下:。
CrystalReport水晶报表详细教程

从“生成”菜单中选择“生成解决方案” 为该项目生成一个数据集对象 注意:生成的数据集对象不包含实际的数据,只包含对数据库结构的描述
17
水晶报表应用程序示例 8-4
向该窗体添加水晶报表项。选择“Crystal Report 库”窗口中的默认项 可用于指定一个或多个字段来汇总特定组
在“标准报表专家”窗口中展开“项目数据”文件夹 展开 数据集, 并选择 DataSet 对象 选择 Book 表,单击“插入表”。在“字段”选项卡中添加所有列
11
使用水晶报表专家 4-2
选择水晶报表
12
使用水晶报表专家 4-3
扩展 OLE DB(ADO) 部分
用于 SQL Server 的 OLE DB 提供程序
13
使用水晶报表专家 4-4
可以将表的所有字段或指定字段 添加到报表中。
选择所需的表并将其插 入到报表中。
14
水晶报表应用程序示例 8-1
22
总结
水晶报表是用于创建报表的标准工具 水晶报表的优点包括: 运行时自定义 报表查看器与其他控件之间的交互 报表作为 Web 服务 开发 Windows 应用程序时,可以使用 CrystalReportViewer控件将报表绑定到 WinForms窗体上 数据集设计器用于创建只包含数据结构而不包 含实际数据的数据集对象 水晶报表中的选择公式可用于计算字段和汇总,确定如何 显示报表的输出结果
7
水晶报表的功能
运行时自定义 报表查看器与其他 控件之间的交互
水晶报表
借助交互式界面更 加容易地创建报表
报表作为Web服务
8
水晶报表查看器
拖放
9
CrystalReportViewer 的属性、方法和事件
水晶报表 Crystal Reports(课堂PPT)

以上报表在BI中实现的基本步骤
(1)新建报表 (2)画表样 (3)取指标 (4)设浮动表元或者固定表元 (5)定义报表参数 和过滤条件 (6)表头表尾 (7)计算和保存
17
– Pull 模式(拉模式):
被请求时,水晶报表直接根据指定的驱动连接数据库然后组装这些 数据,这种方式不需要编写任何代码。
– Push 模式(推模式):
开发者自己编写代码连接数据并组装DataSet,同时将它传送至报表。 在这种情况下,通过使用连接共享以及限制记录集合的大小,可以最 大化使用报表的性能。
群件应用软件如Lotus Notes, Microsoft Exchange 与 Novell
GroupWise
SAP: BW, Info Sets, Tables, and Business Objects Universes
通过网络服务ODBC, JDBC 或者 OLAP可访问的任意数据源。
8
水晶报表的优点
水晶报表有下面一些主要的优点: 快速的报表开发; 能够导出成为复杂的交互性图表; 可以与其它控件一起在WinForm和WebForm中使用; 能够动态地将报表导出成为.pdf,.doc,xls,html,rtf等多种格式;
9
水晶报表的执行模式
水晶报表取数据可以使用下面的方法实现:
利用水晶报表可以创建交互式的优质报表 不仅能为 WinForms 和 WebForms 创建报表,还能将报表作为Web 服
务存放在 Web 服务器上 “水晶报表设计器”界面用于创建并格式化报表,大大减少代码编写
量
3
水晶报表的基本结构
水晶报表的基本结构主要由水晶报表引擎(Crystal Report Engine (CREngine.dll))和水晶报表设计器(Crystal Report Designer (CRDesigner.dll))共同构成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.NET 中,System.Drawing.Printing 命名空间提供以下用 于打印的类:
PrintDocument PrintController PrintEventArgs PrintPageEventArgs PrinterSettings PageSettings .NET 提供两个控件 PrintDocument 和 PrintDialog,用于 在应用程序中实现打印功能。 .NET 提供两个控件 PrintPreviewControl 和 PrintPreviewDialog,用于预览要打印的文档并将设置应 用到此文档。 .NET提供了方便地创建、安装和注册Windows服务的方 案,可重写OnStart、OnStop方法来定制服务内容 Windows 服务需要使用 installutil.exe 工具安装在需要运 行该服务的特定计算机上
部门:20 薪金:10000
姓 名 : Jack 姓名: Mark Lee
Turner
职位: 经理
职位: 行政人员 部门: 30
部门: 10
薪金: 12000
薪金: 3200
姓名: Chan
Cho 职位: 销售员 部门: 40 薪金: 7600
姓 名 : David 姓 名 : Susan 姓 名 : Scott 姓 名 : Adam
能将报表作为Web 服务存放在 Web 服务器上 “水晶报表设计器”界面用于创建并格式化报表,
大大减少代码编写量
水晶报表的功能
运行时自定义
报表查看器与其他 控件之间的交互
水晶报表
借助交互式界面更 加容易地创建报表
报表作为Web服务
水晶报表查看器
拖放
CrystalReportViewer 的属性、方法和事件
使用水晶报表专家 4-2
选择水晶报表
使用水晶报表专家 4-3
用于 SQL Server 的 OLE DB 提供程序
扩展 OLE DB(ADO) 部分
使用水晶报表专家 4-4
可以将表的所有字段或指定字段 添加到报表中。
选择所需的表并将其插 入到报表中。
水晶报表应用程序示例 8-1
水晶报表支持 数据集。 可以使用各种数据源创建 数据集。 使用 数据集创建报表需遵循以下步骤。
从“生成”菜单中选择“生成解决方案” 为该项目生成一个数据集对象 注意:生成的数据集对象不包含实际的数据,只包含对数据库结构的描述
水晶报表应用程序示例 8-4
向该窗体添加水晶报表项。选择“Crystal Report 库”窗口中的默认项 可用于指定一个或多个字段来汇总特定组
在“标准报表专家”窗口中展开“项目数据”文件夹 展开 数据集, 并选择 DataSet 对象
Blake
Jones
William
Johns
职位: 销售员 职位: 行政人员 职位: 销售员 职位: 分析员
部门: 40
部门: 10
部门: 40
部门: 20
薪金: 6500
薪金: 4500
薪金: 8500
薪金: 9500
需要手动计算每个部门的总薪金
水晶报表简介 4-3
姓名
职位
部门
薪金
Jack Turner
行政人员
10
3200
Susan Jones
行政人员
10
4500
部门 10 的总薪金是 7700
Allen John Adam Johns
分析员
20
10000
分有析员条理的表2示0 数据记9录500
部门 20 的总薪金是 1更950容0 易汇总所需的信息
Mark Lee
经理
30
12000
部门 30 的总薪金是 12000
使用水晶报表专家 4-1
可帮助用户创建多种报表、绘制各种图形、设置报表的整体 格式、连接数据库,以及根据用户的选择指定数据库中的记 录等。
创建窗体后,在添加新项中添加“Crystal Report”,将自动 启动水晶报表设计器,进入“标准报表专家”中。
“标准报表专家”可帮助定义报表的数据源、选择要使用的数 据记录并对其进行分组,还可以格式化报表对象和布局。
生成一个 数据集 对象。 连接至 数据集 对象。 数据集设计器用来创建只包含数据结构而不包含实际数
据的 DataSet 对象。 要在报表上显示实际数据,可将数据库中的数据传递至
对象模型中的 DataSet 对象中。 将这个已填入数据的 DataSet 传递至报表引擎。 最后,将报表对象绑定至 WinForms 中相应水晶报表查看器上。
水晶报表应用程序示例 8-2
新建 Windows 应用程序,从菜单中选择“项目” “新建项目 ”
在“类别”区域中展开“本地项目项”,选择“数据 ”,
从“模板”区域选择“数据集”
使用“服务器资源管理器”窗口创建新的链接 将服务器资源管理器中的 Book 表拖 至“数据集”选项卡
水晶报表应用程序示例 8-3
理解水晶报表的作用和优点 使用水晶报表专家创建水晶报表 在窗体中使用水晶报表和报表绑定
目标
简介 4-1
产品部的薪金详细信息
报表-格式化且 财务部的薪金详细有信息条理的数据记
录表示方式
市场部的薪金详细信息
汇总信息?
按顺序显示信息
水晶: Allen John 职位:分析员
属性
方法
DisplayGroupTree
GetCurrentPageNumber()
DisplayT命oo名lb规ar则:
RefreshReport()
ReportSourc在e CrystalReportViewer控件前加“crv”
事件
HandleException
正确地命名:crvSalesReport 、 crvBalanceSheetReport
Chan Cho
销售员
40
7600
David Blake
销售员
40
6500
Scott William
销售员
40
8500
部门 40 的总薪金是 22700
水晶报表简介 4-4
水晶报表是 Visual Studio 环境(包括 Visual )中用于创建报表的标准工具
利用水晶报表可以创建交互式的优质报表 不仅能为 WinForms 和 WebForms 创建报表,还