《表格模板-C数据交换与报表技术 精品.ppt》由会员分享,可在线阅读,更多相关《表格模板-C数据交换与报表技术 精品.ppt(37页珍藏版)》请在第一文库网上搜索。
1、管理工程系管理工程系内容提要内容提要 使用使用Word与与Excel显示和打印数据显示和打印数据 使用使用Windows组件预览和打印数据组件预览和打印数据 Crystal Report的使用的使用备注:本讲代码请在FTP上找“第7讲.rar”压缩包课程导入 ?前端应用程序如何将数据送打印机打印输出分析:应用场合举例。以【田径运动会管理系统】为例(密码123456)1、田径运动会中如何生成电子报名表?填报的电子报名表(Excel文件)如何导入数据库?An:Excel表格数据的访问2、田径运动会生成的比赛进程、分组编排结果(秩序册)如何打印出来?An:先送Word,进行适当编辑调整,预览后打印输
2、出3、田径运动会中的赛中数据(比赛结果:初赛、复赛、决赛)如何打印输出?An:报表生成与打印(Windows组件或Crystal Report) 实现思路:使用实现思路:使用COM组件实现。组件实现。COM:Component Object Model(一)(一)Word实现数据的显示与打印实现数据的显示与打印【涉及知识【涉及知识】引用引用Word动态链接库(动态链接库(Microsoft Word 11.0 Object Lib););对象模型中对象模型中Cell对象的应用;对象的应用;DataGridView控件的应用;控件的应用;Word的的Application对象的应用;对象的应用;
3、Word的的Document对象的应用。对象的应用。2022-9-214C#程序设计实用教程一、一、Word与与Excel显示和打印数据的实现显示和打印数据的实现VBA编程编程【设计目标【设计目标】2022-9-215C#程序设计实用教程【设计步骤】参考代码2022-9-217C#程序设计实用教程(二)(二)Excel实现数据的显示与打印实现数据的显示与打印【涉及知识】引用Excell动态链接库(Microsoft Excel 11.0 Object Lib);Workbooks对象的Add方法的应用;DataGridView控件的应用;Cells对象的应用;Rows对象的应用;2022-9-
4、218C#程序设计实用教程【设计目标【设计目标】【设计步骤】参考代码2022-9-2110C#程序设计实用教程二、二、Windows组件预览和打印组件预览和打印【涉及知识】PrintDialog控件(ShowDialog方法);PrintPreviewDialog控件PrintDocument控件DataGridView控件SqlCommand对象(ExcuteReader方法)Graphics对象(DrawString方法)【设计目标】2022-9-2111C#程序设计实用教程【设计步骤】设计窗体分别添加PrintDialog控件、PrintViewDialog控件、PrintDocumen
5、t控件编写以下事件代码程序运行结果如图所示。2022-9-2113C#程序设计实用教程【设计步骤】设计窗体分别添加PrintDialog控件、PrintViewDialog控件、PrintDocument控件编写以下事件代码公共代码:SqlConnection cnn = new SqlConnection(Data Source=XPSQLEXPRESS;AttachDbFilename=D:ReportBuilderdatabaseTest20081.mdf;Integrated Security=True);SqlDataAdapter da;DataSet ds;事件:frmPrint
6、_LoadprintDocument1_PrintPagebtnSendToWord_ClickbtnQuit_Click参考代码三、Crystal Report(一)报表简介报表设计是数据库应用项目必不可少的一个环节。 VS提供两种报表设计模板:(1)微软报表:上图中名为“报表”或“报表向导”的模板,文件名后缀为“.rdlc”。用于设计在SQL Server报表服务器(Microsoft Reporting Service)上发布的服务器报表,与SQL Server的版本密切相关。(不讲,请参考相关资料)(2)水晶报表:上图中名为“Crystal Reports”的报表设计模板,文件名后缀为
7、“.rpt”。集成于VS2003-VS2008版本,VS2010及以后的版本需要单独下载SAP Crystal Reports, version for Visual Studio 2010安装。设计、调用简单方便、通用性强。 (二)水晶报表基础知识(二)水晶报表基础知识 1、分类、分类(1)从外观分:)从外观分:标准报表、交叉表和邮件标签。 标准报表标准报表:向导包括如何选择数据源、链接表、添加字段和要使用的分组、摘要(总计)和排序字段、创建图表和选择记录等。交叉表交叉表:除了包含标准报表的设计步骤外,还包括如何将报表中的数据作为交叉表对象来显示,提供交叉表样式。【参见“常见问题解答”】邮件
8、标签邮件标签:向导可以帮助用户创建可以打印在任意尺寸上的报表,提供可选择的商用标签类型,可以自定义任何多列样式报表的行列布局。(2)从分发形式分:从分发形式分:嵌入式报表和非嵌入式报表。 2、嵌入式报表和非嵌入式报表不同点:、嵌入式报表和非嵌入式报表不同点:具有与具有与.rpt文件对应的同名包装类,直接通过文件对应的同名包装类,直接通过代码与包装类进行交互,而不是与原始报表文件本身进行代码与包装类进行交互,而不是与原始报表文件本身进行交互。交互。则单独以则单独以.rpt文件形式存在,该报表文件形式存在,该报表不包含在项目内,也没有对应的报表包装类。不包含在项目内,也没有对应的报表包装类。 对于
9、嵌入式报表,系统对项目进行编译时,与其他项目资对于嵌入式报表,系统对项目进行编译时,与其他项目资源一样,报表和其包装类都会被自动嵌入到程序集中,用源一样,报表和其包装类都会被自动嵌入到程序集中,用户看不到被包装后的户看不到被包装后的.rpt文件。对于非嵌入式报表,如果文件。对于非嵌入式报表,如果是是ASP.NET网站,要求该网站,要求该.rpt文件保存在网站根目录下,文件保存在网站根目录下,如果是如果是Windows应用程序则要求分发后应用程序则要求分发后.rpt文件保存在文件保存在和和.exe文件相同的目录下。文件相同的目录下。 对于嵌入式报表,如果修改了报表内容,必须重新编译整对于嵌入式报
10、表,如果修改了报表内容,必须重新编译整个项目。修改非嵌入式报表不须重新编译整个项目。个项目。修改非嵌入式报表不须重新编译整个项目。 3、相关操作、相关操作如何将报表设置为“嵌入式报表”和“非嵌入式报表”? 在【解决方案资源管理器】中,水晶报表.rpt文件的【生成操作】属性默认为“嵌入的资源”,即嵌入式报表。如果将其【生成操作】属性改为“无”,该报表即成为“非嵌入式报表”(此时需要将【复制到输出目录】属性改为“始终复制”,以便在程序中能够访问到该文件)。对于“非嵌入式报表” 需要使用ReportDocument对象的Load方法将报表加载到ReportDocument对象模型中,然后用Cryst
11、alReportViewer Application.StartupPath对象的【ReportSource】属性将报表绑定到ReportDocument对象。如:string reportPath = Application.StartupPath + rpt3.rpt;ReportDocument rd = new ReportDocument();rd.Load(reportPath);rd.SetDataSource(ds.Tables0.DefaultView);this.crystalReportViewer1.ReportSource = rd;注:注:Application.S
12、tartupPath为为.EXE文件所在位置。文件所在位置。(三)嵌入式水晶报表设计器(三)嵌入式水晶报表设计器在嵌入式水晶报表设计器内,可以直接通过拖放方式将一个报表对象(如数据库字段或文本对象)拖动到设计器上,然后使用“属性”窗口或快捷菜单格式化该对象;可以定义报表的数据源,选择要使用的数据记录并对其进行分组,设置报表对象的格式及布局。(四)报表节(四)报表节1) 报表头(报表头(Section1)报表头节中的对象只在报表开头显示一次,一般在该节中放置希望只在整个报表开头出现的信息。2) 页眉(页眉(Section2) 保存在页眉中的对象在每页的顶部位置都会显示。3) 详细资料(详细资料(
13、Section3) 保存在详细资料中的对象在每条记录中都会显示。4) 报表尾(报表尾(Section4) 报表尾节中的对象只在报表的结束显示一次,一般在该节中放置希望只在整个报表结尾出现的信息。5) 页脚(页脚(Section5) 保存在页脚中的对象在每页的底部都会显示。6) 组页眉和组页脚(组页眉和组页脚(Section6)组页眉和组页脚中的对象分别显示在每个新组的开始位置和结束位置。(五)报表数据源(五)报表数据源 水晶报表数据源可以(1)直接连接到数据库、(2)使用ADO.Net数据集。建议尽量使用ADO.Net数据集(要现在项目中创建DataSet数据集.xsd对象)。 使用VS的AD
14、O.NET数据集设计器,既可以从多种数据源(包括Access、Oracle和SQL Server数据库)创建ADO.NET数据集,也可以灵活、方便地控制报表的输出。 (六)水晶报表的对象模型(六)水晶报表的对象模型 对象模型是指构成编程模型的核心类及其周围类。对象模型是指构成编程模型的核心类及其周围类。分类:分类: CrystalReportViewer对象模型对象模型 ReportDocument对象模型对象模型1. CrystalReportViewer对象模型对象模型 CrystalReportViewer控件包含可用于控制控件包含可用于控制该控件如何显示报表的属性和方法,以及少量的该控
15、件如何显示报表的属性和方法,以及少量的与绑定到该控件的报表进行交互的属性和方法。与绑定到该控件的报表进行交互的属性和方法。这些属性和方法构成了一个功能有限的这些属性和方法构成了一个功能有限的CrystalReportViewer对象模型。对象模型。 CrystalReportViewer控件仅用于控制报表控件仅用于控制报表显示的形式,比如控制显示缩放比例等。而要与显示的形式,比如控制显示缩放比例等。而要与报表内部进行交互,则应该使用封装后的其他对报表内部进行交互,则应该使用封装后的其他对象模型。即尽量不要使用象模型。即尽量不要使用CrystalReportViewer对象提供的属性和方法与报表
16、内部进行交互。对象提供的属性和方法与报表内部进行交互。2. ReportDocument对象模型对象模型 ReportDocument对象模型比对象模型比CrystalReportViewer功能多、范围广。该对象功能多、范围广。该对象模型提供了在代码中处理报表的各种能力。模型提供了在代码中处理报表的各种能力。 在在VS中创建水晶报表文件中创建水晶报表文件.rpt,完成报表设,完成报表设计后,选择主菜单的【生成计后,选择主菜单的【生成】 【生成解决方案】,【生成解决方案】,则系统会自动创建一个则系统会自动创建一个ReportDocument对象模对象模型,在工具箱中即可以看到自动生成的与报表同型,在工具箱中即可以看到自动生成的与报表同名的组件,将该组件拖放到设计窗体后,即得到名的组件,将该组件拖放到设计窗体后,即得到实例,使用该实例的属性完成对报表结构及报表实例,使用该实例的属性完成对报表结构及报表内部数据的各种控制。内部数据的各种控制。(一般不用此法,可用代码来实现)(一般不用此法,可用代码来实现) 实例的属性完成对报表结构及报表内部数据的各种控制。例实例的属性完成对报表结构及报表内