说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用Word做Delphi报表输出工具

HTML文档下载 WORD文档下载 PDF文档下载
用Word做Delphi报表输出工具

笔者在实际应用中发现,报表的内容一般很少变动,但其字体格式及版式是经常变动的,而且有时用户为了某种需要,不想修改数据库的真实内容而又要改变报表内容。如果用ReportSmith可以解决前者问题,但对于后者则无能为力了,且其界面是英文的,不合用户习惯。如果用3.0中的TQReport的报表部件,则两者都不能实时解决,必须修改原代码后重新编译才能使用。而使用Word及Excel则完全可以克服以上不足。具体实现如下(以Word实现为例):

首先用Word编辑报表格式,并排好版,把将要输出的数据项用表单域代替,并取名。这里我们暂时假设有表单域Item1及Item2(均为文本型)

将这个文档存为模板文件Example.dot,然后按如下步骤进行:

1)运行Delphi3,在Form1里加入一个System部件集里的TDdeClientCov部件,取名为DdeExample

将其ConnectMode设为ddeManual(手动方式);将DdeService设为‘(WinWord)’;将ServiceApplication设为‘WinWord’。

2)编写一个自定义过程,以激活Word,如下:

procedure Tform1.WordActive(Cmds: TStrings);

var

WordPath: String;

begin

if(not DdeExample.OpenLink) then {判断是否巳动态链接}

begin

if(FindWindow('OpusApp'

nil)=0) then

begin

WordPath := 'C:\msoffice\winword';

if(WordPath='') then

ShowMessage('中文Word未安装或未设置路径,请安装设置Word中文 版。')

else begin

DdeExample.ServiceApplication := WordPath+'\Winword.exe';

if(DdeExample.OpenLink) then {如果巳动态链接执行宏命令}   

DdeExample.ExecuteMacroLines(Cmds

False)

else

ShowMessage('无法启动Word中文版!');

DdeExample.ServiceApplication := 'WinWord.exe';

end;

end

else begin{如果巳动态链接执行宏命令}

DdeExample.ExecuteMacroLines(Cmds

False);

end;

end

else

DdeExample.ExecuteMacroLines(Cmds

false);

end;

在private声明区里加入如下:

procedure ActiveWord(Cmds: TStrings);

3)在Form1中加入一个按钮Button1

在其onclick事件里写如下代码:

procedure TForm1.Button1Click(Sender: TObject);

var

Cmds:TStringList;{创建Cmds}

TempItem1

TempItem2:String;

begin

cmds:=TStringList.Create;

cmds.Clear;

TempItem1:='数据项一';

TempItem2:='数据项二';

with Cmds do

begin

Clear;

Add('[FileNew.Template ="Example.Dot″]');{打开模板文件Example.Dot}

Add('[AppMaximize]');{文档最大化}

Add('[SetFormResult"Item1″

″'+TempItem1+'″]');{将数据TempItem1传给表单域Item1}

Add('[SetFormResult"Item2″

″'+TempItem2+'″]);{将数据TempItem2传给表单域Item2}

end;

WordActive(DdeExample

Cmds);{调用自定义过程}

Cmds.Free;{释放Cmds}

end;

运行这个程序,单击Button1,大家可以发现Word被启动了,屏幕上出现了:数据项一;数据项二两个数据项。最后,大家可以任意修改本报表的格式及数据,因为这时这个报表与具体的应用程序巳没有关系了。

本例中用的是中文Word6或中文Word7。由于Word97的宏命令巳变为Visual Basic语句,如大家想用Word97实现,请将其宏命令改变为相应的代码。

这是个简单的示例,大家可以利用Word的宏录制功能,录取更多的宏(如自动生成表格、填充文字、变动字体等宏命令),并与数据库的各种表联系起来,依次加入Cmds中即可实现您所要求的更复杂的功能。

首席工程师揭秘:LinkedIn大数据后台是如何运作的 年交易额1800亿美元,揭秘PayPal成功背后的三大热门技术 微软妥协Android?向该平台推开源Office 365 SDK 中国云计算大会PPT集萃(一):众多名家分享技术挑战与行业趋势 速度是现在的10000倍,出自物理学家之手的新型电脑 逗你玩?淘宝开放平台从4月1起开始全面收费 出现编程疲劳?千万别纠结 “编程竞赛界王子”教你更好的招聘程序员 SA:三星全球智能电视市场份额达26% Cocos2d-x 3.0分语言包发布 最新进展即将披露 友盟:社会化分享成为APP开发“标准配置” 从“简单”的封面设计剖析Netflix背后的数据哲学 与Linus Torvalds“并列”,虚拟化天才程序员法布里斯贝拉 让超级计算机和数据中心“飞”,Intel推800Gbps神器MXC 【OSTC讲师专访】Debian开发者李道兵:平静地理解开源 红帽推出开源业务流程管理套件:JBoss BPM Suite 6 科学研究证明:程序员快乐才能更好的工作 ChocolateChip-UI:能“逆转”的跨平台应用开发框架 分享12款最佳的Bootstrap设计工具 Apache Flex 4.12发布,支持iOS 7 智能手机应用挑战Web平台,看W3C如何反击? 电信级数据流量与监控系统部署案例分享 TCL联手Mozilla,HTML5智能电视真的要来了! 先睹为快:Unity亚洲开发者大会虚拟游览展示 OSTC·2014 演讲日程出炉,Perl创始人来了! Unity将收购Applifier,并引入Everyplay和GameAds两大平台 《近匠》从Cubieboard到radxa:汤亮的第二次硬件创业 九头蛇与大象之争,Hydra或将取代Hadoop 喜讯:中国安全团队Keen成功在Pwn2Own 2014黑客大赛上攻破64位Mac上的Safari OCP黑客马拉松冠军:24小时头脑风暴背后 新时代应用程序设计及MongoDB的十个深入理解 打印求助!急啊。。。 各位高手,100分求教 请问用C#如何实现可以向任意边停靠(并非DockStyle.Fill)的窗口? 我用 clientdataset 增加一条记录后如何在相关的DBGrid中同步显示? asp.net中有自己带的treeview类吗?(在web 应用程序) 什么c语言编辑器好用,(除了turboc,vc外,)请问高手 帮忙看一下 奇怪,直接继承CDialog类竟然用不了它的默认构造函数(我是菜鸟,帮帮我) Kenel panic:No init found. Try passing init=optino to kernel. 好心人帮帮我好么?在线等。。 superdullwolf(超级大笨狼) 来接分!!!!!!!!!!!!!!! 我的机器是win2000,安装了vmware软件,在模拟win2000pro时检测到了usb硬盘。后来,重新启动计算机,usb硬盘再也不认了,出现了usb硬盘的 有什么办法可以禁止FLASH右键 我得到了Msg.LParam,并且知道它发过来的是一串字符,请问怎样将Msg.LParam转成字符串显示出来? windows socket 1.1的一个问题 这个查询怎么写? rzhou(海盗) 收分来 寻程序员,短期,欢迎加盟!!!!!---------熟悉j2me的!!!!面试合格,待遇为150/天 如何在ADO中设置SQL的字符集? fastreport合计问题????兄弟们指点指点啊!!!! 怎样提高DCOM的响应速度 如何用ASP 在函数/过程中建立全局变量 金刚般若波罗蜜经  陈天竺三藏真谛译  如是我闻。一时佛婆迦婆住舍卫国只陀树林给孤独园。与大比丘众千二百五十人俱。尔时世尊于日前 一个矩形件的排样下料问题,一批板料(长L,宽W),n种零件,每种零件宽度和数量分别为:li,wi,mi,求优化排样结果,恳请各位大侠帮忙!! 请教:关于treeview 读取SQL Server的numeric字段用什么函数? rzhou(海盗) 收分来 急救:“段落或字节不能超过64K”???在线等待 初级问题! rzhou(海盗) 收分来 大家好!!用java开发数据库!!请帮忙!! 排序问题! 1。对vcl库底层机制一些不明白的地方 可以写代码导入数据吗? 连接ORACLE数据库时候的错误提示 关于动态查询表为空时,怎样获取一个条件??最终调取一个提示框 菜鸟提问,向高手请教一个VB中SQL中的问题, 怎样显示局域网内的所有计算机 请问谁有用VMware设置好的solaris文件啊?或是那里可以下载啊??谢谢了~~ 帮帮小弟呀!!散分 在本地机遇到数据无法提交或读取的事,动网论坛的数据也无法读取,什么原因啊 寻程序员,短期,欢迎加盟!!!!!-------熟悉j2me的!!!!面试合格,待遇为150/天 关于Form的构造函数和OnLoad方法...... 请教Web Services的分布式创建和引用的问题?急!!!!! 在c#的WinForm中如何显示cdr文件,CorelDraw图片哪怕是8.0也行 在建立vc 工程的时候选择了生成hlp 文件。我把我的工程放到别的机器上的时候有如下的错误 怎么样得到游标中的数据的多少记录。 求解1000的阶乘 请问大虾有关BootCode方面的一点问题??非常急! 高分请教:如何在安装程序时注册OCX控件? 请问:在TDbgrid控件的TitleClick事件里如何取得鼠标击键的坐标位置? 物质在不同浓度的氧气中燃烧温度是否随氧气的浓度而变化 美国阿拉斯加冰河湾是个公园吗? 孩子的听力不好,在什么情况下必须做电子耳蜗? 菓珍的英语怎么说今天心血来潮上网查了一下,发现比较强大的网络词典里都没有“菓珍”的英语单词!菓珍的英语单词,请告诉小弟啊! 列出方程就可以了 我家的孩子做过电子耳蜗了,需不需要戴助听器?患者信息:男 10岁 安徽 合肥 病情描述(发病时间、主要症状等):我的孩子是大前庭导水管,在5年前做过人工电子耳蜗,想得到怎样的帮助:需不 谁知到冰饮的英文怎么说就是一种冰的饮料,求英文 列出方程式就可以了, 电子耳蜗和助听器哪个更适合孩子? 一个直径24厘米空心柱小空横截面积为10平方毫米,压阀质量0.1千克的高压锅来煮饭,若大气压为10^5帕,求(1)高压锅内气体能达到的最大压强为多少?(2)经商品质量检测部门检测,次高压锅 若α∥β,则α平行于内β的() A、一条确定的直线 B、任意一条直线 C、所有直线 D、无数多条平行线请问选哪项,为什么 耳蜗电池哪里有的卖?来广德玩,小孩的电子耳蜗电池忘带了,进口雷特威牌子的.麻烦知道的告诉下, 鸽子怎么分公母最好分 直线a和直线b互相平行,直线a叫平行线,直线b也叫平行线.对还错. 太阳系中用肉眼能看到的行星是金木水火土.如果不是,哪有哪个行星能够看到到呢,用肉眼哟! 我想知道鸽子怎么分公母? on in at 的最基本用法,顺口溜更好! 请你判断,在晴朗的夜晚,肉眼能观察到的太阳系中最暗的行星是 百事冰纯水 英文怎么说 谁帮我编个同音字的顺口溜 比如用“峰、蜂、锋”来编顺口溜来记住他们的用法,峰、蜂、锋 ,各不同(后面不会编了).文字自选 越有难度越好.能编几个就多编几个哦, 除了太阳系的行星~肉眼看不到其他的行星了吗~ 纯净水的英文译法!请问一下可不可以译成table_water? 哪位文学高手帮我编个同音字的顺口溜谁帮我编个同音字的顺口溜 比如用“峰、蜂、锋”来编顺口溜来记住他们的用法,峰、蜂、锋 ,各不同(后面不会编了).文字自选 越有难度越好.能编几 盖茨去过人民大会堂吗?大的反义词是什么? 不同种类的鱼能生活在一起吗? 雷雨在戏剧结构上有哪些特点 so,such用法顺口溜的意思是什么?such和so的用法区别名前such,形副so,多多少少也用so,little属特殊,小用such,少用so.这个顺口溜是怎么用的呢 各种观赏鱼 都生活在什么水层请教下 一般常见点的观赏鱼 都生活在什么水层! 能全的尽量全点 谢谢了!刚开始养鱼 准备多养几种 想搭配下我问的可能有点笼统了!我现在参考的有战船 , 纯水的英文怎么说? 被人误解的文言文被人误解了!但又不想去解释太多!有这类的文言文没? "中国期刊网"怎么翻译? 纯水的英文有多少种说法,请例出! 在平面上画出三条直线a,b,c的位置,说说三条直线将平面分成几个部分?(不用花,只告诉我分成了几个部分) 在同一直角坐标系中,函数y=-kx与y=k+x的图象大致应为()【 给我过程!】图将就点看- -先谢谢了 列出方程甲乙两队开展足球对抗赛,规定每对胜一场得3分,平一场得1分,负一场得0分,甲队与乙队共赛了10场,甲队保持了不败的记录,一共得了22分,甲队胜了多少场? 例如:不分青红皂白 不认得东南西北 不费吹灰之力 不在话下 不. 那个求微积分的题,为什么你先要对他们求偏导?这种题有什么要求? 列出方程:全部列出方程某商店出售一种100元的商品,有以下几种方案(1)、先提价10%,再降价10%(2)、先降价20%,再提价20%(3)、先提价15%,再降价15%(4)、先降价10%,在提价10% 有没有想东南西北这样的相反四字成语疑惑 冷库2-8度是高温冷库?需化霜程序吗?不需为何蒸发器上结满霜? 鸽子要这样分公母 文言文中的“为”读第二声和第四声的时候分别代表什么意思?文言文中的“为” 有时候是读第二声有时候是第四声,我记得老师说过表达什么意思的时候用第几声的, 左岸是什么意思? 辨 辩 辫 怎么编顺口溜?急用! 英语+ing后读什么 是类似 "应" 还是 后发音 “音” 瑞典冰旅馆英语怎么说?急,120分钟内回答 用辩.辫.瓣编顺口溜 1984年农历9月12上午5:30出生 缺土 我应该佩带什么 或注意什么?已经遭受钱财损失,接下来要注意什么? 如何冬泳?冬泳有益健康吗? 用辫 辩瓣 编一个顺口溜 什么词形容一个人自私 冬泳对身体有哪些不好的影响,冬泳应该注意什么? 求张家界国家森林公园英文介绍 胡言乱语这类的词语有哪些 冬泳的意义与作用 阿拉斯加冰河湾的英文名 照 胡言乱语 写词语 不要列方程哦, 阿拉斯加冰河湾 英语读法急 朋友的孩子耳朵不好做了电子耳蜗,上海南汇哪里可以买到电子耳蜗的电池? 美国大学招生出怪题:是否愿选择外星人美大西洋南岸野生海虾因感染寄生虫数量埃及前总统穆尔西受审 律师相信其将被埃及法院就谋杀示威者罪名对穆尔西进行埃及法院就谋杀示威者罪名对穆尔西进行美国务卿访沙特 称美国与沙特关系必须俄武器出口一半销往亚太 称拟争取非传谷歌更新涂鸦纪念印度女数学家戴维84美国官员表示美政府不会考虑对斯诺登宽埃及法院就谋杀示威者罪名对穆尔西进行湖南3小学生遭绑架杀害续:每名学生家4男子以炉渣充铜渣 诈骗浙江商人63意大利前黑手党组织头目忏悔操控工厂排男子被卡两栋大楼中动弹不得 消防员破埃及法院就谋杀示威者罪名对穆尔西进行叙利亚中部城市发生自杀式炸弹袭击 致美海军核潜艇服役 穿了一身“怪衣服”外交部:CNN同情“10 28”涉男子被卡两栋大楼中动弹不得 消防员破男子加油站点烟引燃汽油 妻子瞬间变“澳洲癌症死亡率调查:农村地区高于城市骑士称汤普森导致欧文左膝骨折 勇士后国足发布征战世预赛40强赛海报:不轻卡纳瓦罗深情告别信:难舍广州 祝中国国新办发人权白皮书 呼格案等入选司法医院成为韩国MERS防控重中之重(高墨西哥举行中期选举(高清)江西宜春一小货车侧翻致1死15伤日本川崎市将制作中文网站宣传当地美食日本男子强闯市长办公室自称市长 被警甘肃戈壁湿地水天相映景色引人流连美媒披露范长龙访美行程 将访3处基地泰国高速公路车祸致2名香港乘客死亡星岛日报:消费热点变幻 带来的恐是烟安钧璨遗体将火化 小S哽咽:生病了也中国人权事业白皮书:艾滋病母婴传播率中国人权事业白皮书:2014年审结国英国10岁男孩门萨测试得分162 创中国东方红五号卫星平台研制进入工程阶原标题:泰国高速公路车祸致2名香港乘北新路桥集团完成新疆桥梁史首件50米世卫总干事:MERS部分疫苗已处于临
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘