为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

yuxu_water@sina.comC

2011-12-04 3页 pdf 201KB 13阅读

用户头像

is_896950

暂无简介

举报
yuxu_water@sina.comC 第4卷 2006在 第6期 6月 中国水运 (理论版) OhinaWaterTransport(TheoryEdition) VoI.4 June No.6 2006 Dephi6.0应用程序调用Excel的方法 夏西江 熊前兴 吕瑾文 摘要:Dephi是目前开发C/S模式的信息系统中使用最为广泛的—种开发工具。报表制作是其必备功能之一。本 文结合实际例子介绍了使用Dephi6.0开发应用程序调用MicrosoftExcel来制作多维复杂报表的基本方法,并以实例 的形式给出了一系列的代码。 关键词:De...
yuxu_water@sina.comC
第4卷 2006在 第6期 6月 中国水运 (理论版) OhinaWaterTransport(TheoryEdition) VoI.4 June No.6 2006 Dephi6.0应用程序调用Excel的方法 夏西江 熊前兴 吕瑾文 摘要:Dephi是目前开发C/S模式的信息系统中使用最为广泛的—种开发工具。报表制作是其必备功能之一。本 文结合实际例子介绍了使用Dephi6.0开发应用程序调用MicrosoftExcel来制作多维复杂报表的基本方法,并以实例 的形式给出了一系列的代码。 关键词:Dephi报表 ExcelSQL组件 中图分类号:TP371 文献标识码:A 文章编号:1006—7973(2006)06-0106-02 一、前言 Delphi是全新的可视化编程环境,为我们提供了一种方 便、快捷的Windows应用程序开发工具。在此以Dephi6.0和 Microsoftoffice2000为例来讲述该方法的使用。 二、Dephi6.0调用MicrosoftExceI的方法 本文以实际大型应用系统中涉及到的报表(如图1)为 例,来讨论Dephi6.0调用MicrosoftExcel的两种方法。 图1报表模板 1.静态调用方法 静态调用方法即使用Dephi6.0的组建来调用Excel。具 体步骤如下: (1)创建组件实例 选中Dephi6.0的组建面板中的Servers面板,在窗体 Forml中创建一个ExcelApplication,ExcelWorkbook和 ExcelWorksheet组建的实例。 (2)打开Excel更改其标题后显示窗体 ExcelApplicationl.Connect; ExcelApplicationl.Caption:=’费票据缴销结算报表。; ExcelApplicationl.Visible[0】:2True; (3)添加新工作簿: ExcelWorkbookl.ConnectTo (ExcelApplicationl.Workbooks.Add(EmptyParam,0)); (4)添加新工作表: VaTTemp_Worksheet:WorkSheet; begin Temp—Worksheet:=ExcelWorkbookl.WorkSheeb.Add (EmptyParalm,EmptyParam,EmptyParam,EmptyParam, 0)as_WorkSheet;ExcelWorkSheetl.ConnectTo(Temp— WorkSheet); End; (5)打开已存在的工作簿 ExcelApplicafionl.Workbooks.Open(’e:\bb3.xls’, EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) 其中’e:\bb3.xls’是模板保存的位置和名称。 (6)给单元格赋值 为单元格赋值要引用其Value属性,该属性是一个 Variant变量。假定数据保存在ADODatasetl中,现将匕起期 结存的起号、止号和份数数据写入Excel表格。在写人数据以 前要先将其数据集中数据的类型进行转化。 ExcelApp.WorkSheets[1].cells[5,11.value:2adodatasetl. Fields.FieldByName(’pzmc’).AsString;票据名称 ExcelApp.WorkSheets[1].cells[5,3】.value:2ADOD ataSetl.Fields.FieldByName(’pjhml’).AsInteger起号 ExcelApp.WorkSheets[1].ceUs[5,4】.value:2ADOD ataSetl.Fields.FieldByName('pjhm2’).AsInteger止号 采用类似的方法就可以将整个表格中的数据采集并填人 完整。 2.动态调用方法 动态调用方法在使用上相对的就灵活很多。同样以图1 表格为例,具体的调用方法如下: (1)环境设置 在窗体的user项中加入OleServer,ComObj和Excel2000 三个类。 (2)创建Excel的实例并连接 varExcelApp:Variant; ExcelApp:=CreateOleObject(’Excel.Application’); (3)打开模板,并将其重命名后保存到临时文件夹 收稿日期:2006.4—22 作者简介:夏西江男(1981一)武汉理工大学计算机科学与技术学院研究生 (430063) 万方数据 第6期 夏西江:Dephi6.0应用程序调用MicrosoftExcel的方法 107 ExcelApp.WorkBooks.Open(e\bb3.xls’); ExcelApp.ActiveWorkBook.Save.As(ektemp\票据缴销结 算报表.xls’); (4)写入数据 ExcelApp.WorkSheets[1].ceUs[2,141.value:=’元’;Excel App.WorkSheets[1]..ceUs[14,2】.value:=m_hyf; 其中mhyf保存对应的费目。 (5)行插入和删除 当图1报表模板中5—12行不能满足数据量的要求时, 可以在12行前插入一行,这样就可以沿用12行的表格格式, 当数据写入完成时(数据总数用i),删除最后多余的一 行。代码如下: ExcelApp.ActiveSheet.Rows[12].Insert; ExcelApp.ActiveSheet.Rows[5].Delete; (6)打印预览和输出 在打印之前如果需要用户先核实在确定是否打印,则使 用打印预览和界面显示命令: ExcelApp.Visible:=true;ExcelApp.AcfiveSheet.Print Preview;如果打印之前不需要核实,直接在后台进行打印, 则使用打印命令:ExcelApp.AcfiveSheet.PrintOut; (7)实例删除与资源的释放 报表输出完成之后,要及时关闭Excel的工作薄,以便 下一次使用。 ifExcelApp.Workbooks.Count>0then begin ExcelApp.ActiveWorkBook.Saved:2True; ExcelApp.WorkBooks.close; end; ExcelApp.Quit; ExcelApp.Disconnect; 3.一个具体的实例 在2.2—2.3中给出了调用Excel制作报表的基本方法, 下面将给出图1报表制作的具体实例。假定票据领人的数据 保存在ADODatasetl中,当前日期保存datatime中,费用分 别保存在m_hyf,m_ygf,m_hzf,m_gwf中。 procedureTfrmtongji.bb3baobiao(); Var strl:string; j:integer; begin J:20; ifExcelApp.Workbooks.Count>0then begin ExcelApp.ActiveWorkBook.Saved:2True; ExcelApp.WorkBooks.Close; end; ExcelApp.WorkBooks.Open(e.-\bb3。); ExcelApp.AcfiveWorkBook.SaveAs(e:\bb3ktemp\票据 领用缴销结算报表.xls‘); whilenotadodatasetl.Eofdo begin ifj>6then begin ExcelApp.ActiveSheet.Rows[5+j】.Inset; end; ExcelApp.WorkSheets[1].cells[5+j,1】: =adodatasetl.Fields.FieldByName('pzmc’).AsString; ExcelApp.WorkSheets[1].cells[5+j,61.value: =ADODataSetl.Fields.FieldByName(’pjhln-lyl‘).AsInteger; //起号 ExcelApp.WorkSheets[1].ceUs[5+j,7】.value: =ADODataSetl.Fields.FieldByName(。pjhm_ly2’).AsInteger; //止号ExcelApp.WorkSheets[1].cells[5+j,8】.value: =ADODataSetl.Fields.FieldByNarne(’pjhm_ly2’).AsInteger— ExcelApp.WorkSheets[1].cells[14+j,2】.2m_hyf; ExcelApp.WorkSheets[1].cells[15+j,2】:2m_ygfi ExcelApp.WorkSheets[1].cells[16+j,2】.2m_hzf; ExcelApp.WorkSheets[1].cells[17+j,2】:2m_gwf; strl:=FormatDateTime(’y)w’,datetime)+’年 ’+FormatDateTime(’mm.,datetime)+’月’+FormatDateTime (’dd',datedme)+1日’; ExcelApp.WorkSheets[1].cells[21+j,14].value:2strl; ExcelApp.WorkSheets[1】.ceUs[21+j,141.value:。str4; ExcelApp.AcdveWorkBook.Saved:2True; ExcelApp.Visible:2true; ExcelApp.ActiveSheet.PrintPreview; end; Dephi6.0调用Excel制作的数据报表是最具有通用性的 一种功能,除此以外,Dephi6.0还可以调用Excel制作图形报 表。具体的调用方法与制作数据报表具有相似性。 三、结束语 Dephi6.0调用Microsoft:Excel来进行报表制作非常的灵 活和方便。开发实际应用系统的经验表明,这一方法是行之 有效的:第一、增加了报表制作的灵活性;第二、图形报表 的制作丰富了报表的内容;第三、报表中直接输入公式,减 少了代码的编写量;第四、报表模板以文件形式单独保存共 享性强,也增加了调用该模板的各个模块之间通讯的灵活性。 参考文献 f1】郑存红,胡荣强,赵瑞峰.Vc++程序数据在Excel中的动 态显示.U】.武汉理工大学学报(信息与管理工程 版).2002.24.5:39"41. 【2】徐新华.dephi5高级编程一Database与MIDAS编程.【M】. 北京.人民邮电出版社.2000:61—168. 【3】陈瑞.Dephi分布式多层应用程序开发.【M】.北京.清华大 学出版社.2002:187—216. f4】http://www.delphibbs.com/keylife/iblog_show.asp?xid2 11659. 【5】刘卫.在Delphi中通过OLEAutomation作Excel.福建电 脑.2006.1. 万方数据 Dephi 6.0应用程序调用Excel的方法 作者: 夏西江, 熊前兴, 吕瑾文, Xia Xijiang, Xiong Qianxing, Lu Jinwen 作者单位: 武汉理工大学计算机科学与技术学院 刊名: 中国水运(理论版) 英文刊名: CHINA WATER TRANSPORT(THEORY EDITION) 年,卷(期): 2006,4(6) 参考文献(5条) 1.刘卫 在Delphi中通过OLEAutomation操作Excel[期刊论文]-福建电脑 2006(01) 2.查看详情 3.陈瑞 Dephi分布式多层应用程序开发 2002 4.徐新华 dephi5高级编程-Database与MIDAS编程 2000 5.郑存红;胡荣强;赵瑞峰 VC++程序数据在Excel中的动态显示[期刊论文]-武汉理工大学学报(信息与管理工程版) 2002(05) 本文链接:http://d.g.wanfangdata.com.cn/Periodical_zgsy-llb200606048.aspx
/
本文档为【yuxu_water@sina.comC】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索