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

用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中即可实现您所要求的更复杂的功能。

数据会被清空:部分三星、魅族手机存安全漏洞 IE10简化文件访问 支持FileReader API 从MySQL迁移到MariaSQL Wikipedia力求开放 奥巴马筹款网站的制作过程 国内芯片厂商发力4G 新岸线2013年将推LTE方案 CMDN Club 23期:开放平台和O2O移动产品开发 花旗调低Apple股票评级 不信iPhone5会卖得好 2012年Linux Journal读者选择奖结果公布 百度云SiteApp:三步轻松创建移动网站 Twitter跨数据中心图片存储系统Blobstore解析 摩托罗拉携手中国移动发布Intel Inside智能机新锋丽i MT788 第五届“英特尔杯”全国大学生软件创新大赛圆满落幕 Appro推出液冷超级计算机 Dell:曾敦促微软WinRT放弃Windows品牌 IE10十大优点:渲染页面比Chrome快8% 法国电信:开放平台下的O2O移动产品怎么玩? 客如云创始人彭雷:寻找O2O“失落的半圆” 中国电信宋鹏飞:天翼开放平台的服务及架构解析 W3C小组宣布:HTML5标准制定完成 还记得DUQU吗?起因可能是Windows中存在了20多年的漏洞! API管理的五大规则 Google也节能:挖角美能源部Arun Majumdar博士 预测:云计算领域的5大变革 CTO俱乐部:移动信息化的创新实践及互联网创业 核心组图曝光:BlackBerry 10明年1月30日发布 “蛐蛐儿”创始人朱连兴:音频二维码的技术实现和应用场景 信恩科技创始人林兴陆:QR Code二维码的前世今生 2012移动开发工具盘点:傻瓜式游戏工具引擎 《福布斯》发布年度“未来之星” 扎克伯格上榜 Cloudera透露Impala发行版新功能及开源计划 Nokia落寞身影下 三星成为全球最大手机厂商 Dim cReg As New cRegistry 该引用哪个库(库的全名) 学习遇到的难题 特殊按钮 我想开发一个三层结构的进销存软件问题? 怦怦运气,看看有没有人知道,近来看看 请问有那个网站有关于ORACLE的入门书籍下载. 非常不错的delphi网站 我有一个问题想问问大家!!!有分送哟。 高价收购! 谁可以给我TSR完整的例程...(要有注释喔) 现在用的控件都是D版的,以后怎么注册软件啊? 请过了网络设计师的兄弟帮帮忙! 在C中,找一个字符或字符串在另外一个长字符串(64K)最后出现的位置,怎么实现最高效呢? 用 DHCP 分配了二个网段的IP地址。 “斑竹”在吗?象是只有你能够解决了!!!(附程序及错误代码!!!) 请问哪位仁兄知道SYGATE4.2 build 803的注册码? 如何在表单中阻止双引号??? 大虾们,帮我看看,这个错误和警告是什么原因造成的? 帮帮我吧 关于B/S报表? 怎样设置msflexgrid某一列的颜色? 用 DHCP 分配了二个网段的IP。 怎么能抓到密码? 在运行时想改变一个label的字体怎么改变,有没有做过的,label的属性在设计时是可以改的 fatal error C1010 找一个和VB的属性区一样的代码,控件或类库均可 如何调用在不同的窗体里自定义的过程 一个技术探讨问题,我想知道象在WORD等软件中插入图形或图象后,还能把它选择,并移动是怎样实现的? 请问:在另一个.asp文件中如何调用相同的变量? WEB初级应用问题 DIALOGBAR问题 请想报考明年的网络设计师的朋友进来聊聊 Oracle面向对象特征讨论,请进! 我学会VISUAL C++ 到底要多少时间 线程调试问题 大家一起进来讨论oracle和sql server的日志哦 请指教如果设置服务器端COM组件的权限,使终端可以访问到?分数好说啦,急,高手快帮忙! 如何把程序嵌入到widows Expolore 中? 今天心情特好!散分 在vc下怎样调出window下的“打开方式”对话框,他是类还是控件!请高手指点! 一个门外汉的问题~~~~ 谁知道windows共享密码如何算的 vc中asm怎么不執行? 在开始菜单点右键,拉出的菜单里的内容,怎么添加删除?? 帮忙找一个和VB的属性区一样的代码,控件或类库均可。 Word 中字体的问题 我买了一台SLE4442读写器, 为什么不能写 谁用过FAST REPORT 请求帮助 realplayer中文件菜单栏中的以看过的文件名,怎么删除??? php如何改写或者是添加一个cron的命令参数给linux服务器? SQL Server 能制作表单和报表吗?????? 一个数缩小为原来的十分之一,新数就比原数少612,原数是多少? 轴承内径12mm,外径28mm.与内径配套的轴的直径是12mm公差是正多少丝?与外径配套的外壳公差是多少丝? cpk计算公式 若等差数列an的项数是奇数,a1=1,an的奇数项的和是175,偶数项的和是150,求等差数列的公差d 0乘任何数还是零吗 等比数列中 若项数为2n-1 则S奇与S偶的关系 轴承外径与内径大小普通的轴承规格是怎样的呢?外径与内径的尺寸大小是固定的吗?例如外径一样的轴承,内径可以选择不同的吗? 0乘任何数都得原数对吗 项数为奇数的等比数列,S奇-a1/S偶=d的证明 轴承内径为100mm,当加热到100度时内径增加了多少尺寸. 十进制化二进制数 33 =1乘2的五次+0乘2的四次+0乘2的三次+0乘2的二次+0乘2的一次+1乘2的零次=100001对吗? 星形接法和三角形接法在线位和相位上的电流和电压有什么关系 一个数乘1/10,就是这个数缩小了十倍.这句话对吗? (1-根号2)x^2=(1+根号2)x 的一般式____,二次项系数___,常数项___ 已知二项式(X-X方分之1)n次展开式中所有偶数项的系数之和为-512,求二项式系数最大的项 已知等差数列{an}的项数为偶数,且公差d=1,且奇数的和为44,偶数项的和为33,则此数列的中间项和项数已知等差数列{an}的项数为偶数,且公差d=1,且奇数项的和为44,偶数项的和为33,则此数列的中间 若(3根号X-1/根号X)^n的展开式中各项系数之和为64,则展开式的常数项为-540是如何算出的? 已知二项式(x-1/x方)n次展开式中所有偶数项的系数和为-512 求二项式系数最大项 如果等差数列{an}的项数是基数,a1=1,{an}的基数项和是175,偶数项和是150,求公差d 已知(根号x-2/x^2)^n的展开式中,第五项的系数与第3项的系数的比是56:3,求展开式中的常数项 把一个数缩小1000倍,再把小数点向右移动两位后是80.5,这个数原来是( ) 总人数一定时,出勤率和出勤人数成什么比例?为什么? 求证:若项数为2n-1,则S2n-1=(2n-1)an,且S奇-S偶= an,S奇/S偶= n/ (n-1) (S奇=nan, S偶=(n-1)an) 一台异步电动机 电压为380V功率为15KW 它的电流是多少 公式是什么 六年级的总人数一定,某天的出勤率和出勤人数成什么比例 @三相电机星型和三角形接法 三角形接法的相电流小于星型接法的电流?电机选线是根据相电流吗 (1+2x)^n的展开式中第6项与第7项的系数相等.求展开式中二项式系数最大的项和系数最大的项? 用轴承的内径、外径、厚度怎么得到轴承的型号 请教电机三角形接法和星形接法的电压电流详细问题假如一台75KW的三相异步电动机电动机,COS=90%.其三角形接法时相电压,线电压,相电流,线电流各为多少?若同样的电机采用Y型接法,其各指标为 (1+2x)^n的展开式中第6项与第7项的系数相等,求展开式中二项式系数最大的项和系数最大的项……要求步骤精细……! 一道关于利润的应用题 最好用方程解某店原来将一批水果按百分之百的利润定价销售,由于定价过高,无人购买,不得不按百分之三十八的利润重新定价,售出了其中的百分之四十;害怕水果变 数学判断题,请解答圆锥有一条高.( )我的疑惑是:他的正确说法应该是“圆锥只有一条高”,可是我的班主任说上题是对的,并给我扣了分,请网友们解答,到底是对还是错?20悬赏,回答的精细 已知(x^2-1/根号x)^n的展开式中第三项与第五项的系数之比为3/14,则展开式中常数项是? 列方程解浓度、利润应用题这五道题都是关于浓度、利润的应用题,一定要用一元一次方程解答啊!1.10千克盐水溶液中的96%是水分,蒸发一段时间后,盐水中的95%是水分,那么蒸发了多少千克水?2. 1、5分之4的分子和分母同时加上16,分数的大小不变()2、一个分数的分子扩大到它的两倍,分母扩大到它的四倍,这个分数就缩小到原来的2分之一()3、与2分之1相等的数有无数个() 已知(根号x +2/x)^n展开式中第五项的系数与第三项系数比是10:1,求...已知(根号x +2/x)^n展开式中第五项的系数与第三项系数比是10:1,求展开式中含x的项, 答案是112x, 求解啊要详细过程 6309、6006、629、7318轴承的代号含义 1.长方形周长一定,长和宽成反比例( )2.正方体的棱长和它的表面积成正比例( )3.正方体的底面积和它的表面积成正比例( )4.正方体的棱长和与它的棱长正比例( )5.图上距离一定,比例 轴承中的内径、外径、厚度 如何计算的?内径、外径到底是直径还是半径?厚度是怎么算的? 甲数比乙数多4,乙数缩小到它的十分之一后是0.6,甲数缩小到它的十分之一后是( ) 1)不定积分∫f(x)dx表示的是被积函数f(x)所有的函数 ()2)若函数f(x)在X0处可导,则f(x)在X0处连续 ()3)若函数f(x)在X0处连续,则f(x)在X0处可导 (2/3)ˆ(-2)=9/4 9ˆ(-1/2)=1/3 ()4) 电机星三角:证明星型启动电流是三角形启动电流的3分之1 甲数比乙数多3,乙数缩小到原来的十分之一为0.7甲数增加它的百分之二十五是 设计一个用有理指数幂近无理指数幂5的根号2次的算法 并估计5的根号2次的近似值,画出算法的程序图greatdju - 高级魔法师 七级 可不可以详细一点 星三角启动运行的电动机一般是三角形启动,星形运行吗? 甲数比乙数的2倍少3,乙数缩小10倍是5/3,那么甲数比乙数多 一个数(0除外)乘1/5,这个数一定缩小到原来的1/5,判断对还是错.请问对的理由是什么,我是小学生,不清楚,请说明白些谢谢. 电动机采用星三角连接的条件:星形连接起动电流是三角形直接起动电流的三分之一,但试验中数据有较大出入?稍大于二分之一, 甲数缩小10倍后等于乙数,甲数比乙数多180,甲、乙各是多少?列出式子,并说出为什么, 电机星形接法与三角形接法哪个功率大绕组不变,有计算公式更好 求(2x-1)^5的展开式中各项系数之和及各项的二项式系数之和 应用题方程解 三角形接法电工功率的计算公式是多少 在(2x-1/2x)^2的展开式中,奇数项的二项式系数和为32,则含1/x^2的系数为 an是(3-根号x)的n次方展开式中x一次项系数,则lim [ (3的2次方 /a2)+ (3的3次方/a3)+…(3的n次方/an) =an 的n 属于2,3,4,5…… 三相电机星形和三角形运行时功率是否一样,算法是否一样 把6.34缩小到原来的一百分之一,就要把小数点向( )移动( )位,得到( ) (1+2根号x)^3*(1—三次根号x)^5 的展开式中x的系数是多少? 轴承的内径和轴的外径如何匹配?请问,比方说我的一个轴承内径是4mm,那装在轴承内的轴是多少粗细?用锤子敲进去又要敲得进去又要牢固,怎么办?还有一个问题:比方我一个轴的直径是2.2mm我 CPK中δ的计算公式请问一下哪位网友可以说明一下CPK中 计算公式中为什么在除以N-1,而不是N.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn