C数据交换与报表技术

上传人:c****d 文档编号:243141249 上传时间:2024-09-16 格式:PPT 页数:37 大小:624KB
返回 下载 相关 举报
C数据交换与报表技术_第1页
第1页 / 共37页
C数据交换与报表技术_第2页
第2页 / 共37页
C数据交换与报表技术_第3页
第3页 / 共37页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,数据库应用技术 信息技术工程学院 管理工程系,第10讲 数据交换与报表技术(扩展内容),管理工程系,1,内容提要,使用Word与Excel显示和打印数据,使用Windows组件预览和打印数据,Crystal Report的使用,备注:本讲代码请在FTP上找“第7讲.rar”压缩包,2,课程导入,?前端应用程序如何将数据送打印机打印输出,分析:应用场合举例。以【田径运动会管理系统】为例(密码123456),1、田径运动会中如何生成电子报名表?填报的电子报名表(Excel文件)如何导入数据库?,An:Excel表格数据的访问,2、田径运动会生成的比赛进程、分组编排结果(秩序册)如何打印出来?,An:先送Word,进行适当编辑调整,预览后打印输出,3、田径运动会中的赛中数据(比赛结果:初赛、复赛、决赛)如何打印输出?,An:报表生成与打印(Windows组件或Crystal Report),3,实现思路:使用COM组件实现。COM:Component Object Model,(一)Word实现数据的显示与打印,【涉及知识】,引用Word动态链接库(Microsoft Word 11.0 Object Lib);,对象模型中Cell对象的应用;,DataGridView控件的应用;,Word的Application对象的应用;,Word的Document对象的应用。,9/16/2024,4,C#程序设计实用教程,一、Word与Excel显示和打印数据的实现VBA编程,4,【,设计目标,】,9/16/2024,5,C#程序设计实用教程,5,【设计步骤】,参考代码,6,9/16/2024,7,C#程序设计实用教程,(二)Excel实现数据的显示与打印,【涉及知识】,引用,Excell,动态链接库(,Microsoft Excel 11.0 Object Lib,);,Workbooks,对象的,Add,方法的应用;,DataGridView,控件的应用;,Cells,对象的应用;,Rows,对象的应用;,7,9/16/2024,8,C#程序设计实用教程,【设计目标】,8,【设计步骤】,参考代码,9,9/16/2024,10,C#程序设计实用教程,二、Windows组件预览和打印,【涉及知识】,PrintDialog控件(ShowDialog方法);,PrintPreviewDialog控件,PrintDocument控件,DataGridView控件,SqlCommand对象(ExcuteReader方法),Graphics对象(DrawString方法),10,【,设计目标,】,9/16/2024,11,C#程序设计实用教程,11,【设计步骤】,设计窗体,分别添加PrintDialog控件、PrintViewDialog控件、PrintDocument控件,编写以下事件代码,12,程序运行结果如图所示。,9/16/2024,13,C#程序设计实用教程,【设计步骤】,设计窗体,分别添加PrintDialog控件、PrintViewDialog控件、PrintDocument控件,编写以下事件代码,公共代码:,SqlConnection cnn = new SqlConnection(Data Source=XPSQLEXPRESS;AttachDb:ReportBuilderdatabaseTest20081.mdf;Integrated Security=True);,SqlDataAdapter da;,DataSet ds;,事件:,frmPrint_Load,printDocument1_PrintPage,btnSendToWord_Click,btnQuit_Click,参考代码,13,三、Crystal Report,(一)报表简介,报表设计是数据库应用项目必不可少的一个环节。,14,VS提供两种报表设计模板:,(1),微软报表,:上图中名为“报表”或“报表向导”的模板,文件名后缀为“.rdlc”。用于设计在SQL Server报表服务器(Microsoft Reporting Service)上发布的服务器报表,与SQL Server的版本密切相关。(不讲,请参考相关资料),(2),水晶报表,:上图中名为“Crystal Reports”的报表设计模板,文件名后缀为“.rpt”。集成于VS2003-VS2008版本,VS2010及以后的版本需要单独下载,SAP Crystal Reports, version for Visual Studio 2010,安装。设计、调用简单方便、通用性强。,15,(二)水晶报表基础知识,1、分类,(1)从外观分:,标准报表、交叉表和邮件标签。,标准报表,:向导包括如何选择数据源、链接表、添加字段和要使用的分组、摘要(总计)和排序字段、创建图表和选择记录等。,交叉表,:除了包含标准报表的设计步骤外,还包括如何将报表中的数据作为交叉表对象来显示,提供交叉表样式。【参见“常见问题解答”】,邮件标签,:向导可以帮助用户创建可以打印在任意尺寸上的报表,提供可选择的商用标签类型,可以自定义任何多列样式报表的行列布局。,(2),从分发形式分:,嵌入式报表和非嵌入式报表。,16,17,2、嵌入式报表和非嵌入式报表不同点:,嵌入式报表,具有与.rpt文件对应的同名包装类,直接通过代码与包装类进行交互,而不是与原始报表文件本身进行交互。,非嵌入式报表,则单独以.rpt文件形式存在,该报表不包含在项目内,也没有对应的报表包装类。,对于嵌入式报表,系统对项目进行编译时,与其他项目资源一样,报表和其包装类都会被自动嵌入到程序集中,用户看不到被包装后的.rpt文件。对于非嵌入式报表,如果是ASP.NET网站,要求该.rpt文件保存在网站根目录下,如果是Windows应用程序则要求分发后.rpt文件保存在和.exe文件相同的目录下。,对于嵌入式报表,如果修改了报表内容,必须重新编译整个项目。修改非嵌入式报表不须重新编译整个项目。,18,3、相关操作,如何将报表设置为“嵌入式报表”和“非嵌入式报表”?,在【解决方案资源管理器】中,水晶报表.rpt文件的【生成操作】属性默认为“嵌入的资源”,即嵌入式报表。如果将其【生成操作】属性改为“无”,该报表即成为“非嵌入式报表”(此时需要将【复制到输出目录】属性改为“始终复制”,以便在程序中能够访问到该文件)。,19,20,对于“非嵌入式报表”,需要使用ReportDocument对象的Load方法将报表加载到ReportDocument对象模型中,然后用CrystalReportViewer,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.StartupPath为.EXE文件所在位置。,21,(三)嵌入式水晶报表设计器,在嵌入式水晶报表设计器内,可以直接通过拖放方式将一个报表对象(如数据库字段或文本对象)拖动到设计器上,然后使用“属性”窗口或快捷菜单格式化该对象;可以定义报表的数据源,选择要使用的数据记录并对其进行分组,设置报表对象的格式及布局。,22,23,(四)报表节,1) 报表头(Section1),报表头节中的对象只在报表开头显示一次,一般在该节中放置希望只在整个报表开头出现的信息。,2) 页眉(Section2),保存在页眉中的对象在每页的顶部位置都会显示。,3) 详细资料(Section3),保存在详细资料中的对象在每条记录中都会显示。,4) 报表尾(Section4),报表尾节中的对象只在报表的结束显示一次,一般在该节中放置希望只在整个报表结尾出现的信息。,5) 页脚(Section5),保存在页脚中的对象在每页的底部都会显示。,6) 组页眉和组页脚(Section6),组页眉和组页脚中的对象分别显示在每个新组的开始位置和结束位置。,24,(五)报表数据源,水晶报表数据源可以(1)直接连接到数据库、(2)使用ADO.Net数据集。建议尽量使用ADO.Net数据集(要现在项目中创建DataSet数据集.xsd对象)。,使用VS的ADO.NET数据集设计器,既可以从多种数据源(包括Access、Oracle和SQL Server数据库)创建ADO.NET数据集,也可以灵活、方便地控制报表的输出。,(六)水晶报表的对象模型,对象模型是指构成编程模型的核心类及其周围类。,分类:,CrystalReportViewer对象模型,ReportDocument对象模型,25,1. CrystalReportViewer对象模型,CrystalReportViewer控件包含可用于控制该控件如何显示报表的属性和方法,以及少量的与绑定到该控件的报表进行交互的属性和方法。这些属性和方法构成了一个功能有限的CrystalReportViewer对象模型。,CrystalReportViewer控件仅用于控制报表显示的形式,比如控制显示缩放比例等。而要与报表内部进行交互,则应该使用封装后的其他对象模型。即尽量不要使用CrystalReportViewer对象提供的属性和方法与报表内部进行交互。,26,2. ReportDocument对象模型,ReportDocument对象模型比CrystalReportViewer功能多、范围广。该对象模型提供了在代码中处理报表的各种能力。,在VS中创建水晶报表文件.rpt,完成报表设计后,选择主菜单的【生成】,【生成解决方案】,则系统会自动创建一个ReportDocument对象模型,在工具箱中即可以看到自动生成的与报表同名的组件,将该组件拖放到设计窗体后,即得到实例,使用该实例的属性完成对报表结构及报表内部数据的各种控制。,(一般不用此法,可用代码来实现),27,实例的属性完成对报表结构及报表内部数据的各种控制。例如:,1) ReportDefinition属性,获取ReportDefinition对象,该对象对应于报表设计器中的布局。,2) DataDefinition属性,获取DataDefinition对象,该对象对应于报表设计器中的字段资源管理器。,3) SummaryInfo属性,获取SummaryInfo对象,可以通过该对象设置报表主题等。例如:,studentReport1.SummaryInfo.ReportTitle = 学生情况表;,该行代码的意思是设置报表标题为“学生情况表”。,4) RecordSelectionFormula属性,获取或设置记录选定公式,用于筛选指定的记录。例,如:studentReport1.RecordSelectionFormula = MyTable2.姓名 like *王*;,该行代码的意思是匹配MyTable2中所有姓名中包含“王”的记录。,28,1设计水晶报表,在VS模板中,通过新建项,然后利用向导创建水晶报表,再通过嵌入式水晶报表设计器(可转换为非嵌入式),即可将.prt报表设计出来。,2.显示和打印水晶报表,(以下内容用案例操作代替),假如已经设计了一个水晶报表Rpt1.rpt,显示和打印该报表的步骤如下。,(1)添加一个窗体。例如Form1.cs。,(2)从工具箱中向窗体拖放一个CrystalReportViewer控件,该控件提供了显示(打印预览)、打印和导出报表到Excel文档等功能。,29,(3)在Form1.cs中添加命名空间引用,以便使用ReportDocument对象模型:,using CrystalDecisions.CrystalReports.Engine;,(4)创建报表实例。例如:,Rpt1 rpt = new Rpt1();,(5)根据报表实例,得到对应的ReportDocument对象。例如:,ReportDocument document = (ReportDocument)rpt;,(6)将CrystalReportViewer控件绑定到ReportDocument对象。例如:crystalReportViewer1.ReportSource = document;,(7)利用ReportDocument对象与报表内部交互。,3不使用打印机驱动程序,右击报表的任何空区域,选择【设计】【打印机设置】【无打印机】,然后单击“确定”按钮即可。,30,(八)案例,注:源代码在“常见问题解答”下找“水晶报表案例”。,【案例1】设计一个水晶报表,输出MyDatabase数据库中MyTable2的所有数据。,具体操作可看视频,31,实现步骤:,1、新建“Windows窗体应用程序”项目;,2、右击【解决方案资源管理器】中的项目名称,选择【属性】:,(1)在【应用程序】标签下将目标框架改为“.NET Framework 4”。,(2)在【设置】标签中,“类型”选择“连接字符串”,在“值”中连接你的数据库,关闭。这样配置了App.Config文件(即本项目的数据库连接);,(3)打开App.Config文件,将name字段的值改为“MyCon”;,改为,保存后关闭该文件。,3、创建数据集,(1),右键单击项目名称,“添加”,“新建项”,选择“数据集”,命名为“DS”,“确定”;(2)在【服务器资源管理器】中创建一个到你的数据库的连接;(3)将你的连接下用到的表拖入DS窗体中;(4)保存并关闭DS。,4、新建一个报表:右键单击项目名称,“添加”,“新建项”,选择“Crystal Reports”,命名为“Rpt1”,单击“添加”;选择“作为空白报表”和“标准”,“确定”;,32,5、在左侧的【字段资源管理器】下右键单击“数据库字段”,选择“数据库专家”,展开“项目数据”、“ADO.NET数据集”,将用到的表添加到右侧列表框中,“确定”,如需要在表中建立链接,像在数据库中创建关系一样操作。“确定”。,6、设计报表:展开【字段资源管理器】中的“数据库字段”下的表,将需要的字段拖入报表中相应位置,设置报表中相应控件的值,完成你所需要的报表设计。【注意ITextObject和IFieldObject的区别,前者相当于数据库中的某个字段。后者其实是一文本框控件,右键单击可设置他的值】。报表的详细设计可参考相关资料。保存并关闭“Rpt1.rpt”。,7、在【解决方案资源管理器】中打开Form1窗体,将【工具箱】中的【报表设计】下的CrystalReportView控件拖入窗体中。,8、编写代码:,(1)引用配置管理器:在【解决方案资源管理器】右击“引用”“添加引用”在“.NET”标签下选择“System. Configuration”;,33,(2),打开窗体的Load事件,在代码窗体的顶部加入下面的引用,using System.Data.SqlClient;,using CrystalDecisions.CrystalReports.Engine;,using System.Configuration;,(3)在窗体的Load事件中加入如下代码:,private void Form1_Load(object sender, EventArgs e),/嵌入式水晶报表,SqlConnection con = new SqlConnection();,con.ConnectionString = ConfigurationManager.ConnectionStringsMyCon.ConnectionString.ToString();,SqlDataAdapter da = new SqlDataAdapter(select * from Mytable1, con);,DataSet ds = new DataSet();,da.Fill(ds, Mytable1);,Rpt1 rpt = new Rpt1();,rpt.SetDataSource(ds.TablesMytable1);,this.crystalReportViewer1.ReportSource = rpt;,(4)运行程序。,34,注:改为非嵌入式报表的方法,1、在【解决方案资源管理器】中单击Rpt1.rpt;,在属性窗口中设置“复制到输出目录”为“始终复制”;“生成操作”为“无”;,非嵌入式报表,2、修改窗体的Load事件代码如下:,private void Form1_Load(object sender, EventArgs e),/非嵌入式水晶报表,SqlConnection con = new SqlConnection();,con.ConnectionString = ConfigurationManager.ConnectionStringsMyCon.ConnectionString.ToString();,SqlDataAdapter da = new SqlDataAdapter(select * from Mytable1, con);,DataSet ds = new DataSet();,da.Fill(ds, Mytable1);,string reportPath = Application.StartupPath + Rpt1.rpt; ReportDocument rd = new ReportDocument(); rd.Load(reportPath); rd.SetDataSource(ds.Tables0.DefaultView); this.crystalReportViewer1.ReportSource = rd;,35,【案例2】设计一个水晶报表,显示MyDatabase.mdf数据库中的学生情况,要求报表每页显示一个学生的信息,包括基本情况、家庭成员等,并能够在程序中指定查询条件。,提示:本例主要说明如何在一个报表中输出多个关联表数据,以及如何显示表中的某些记录。,36,具体操作:请看视视频,37,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!