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...
第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,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。