在PowerBuilder中利用Word输出报表
利用powerbuilder实现中国式报表的设计方法

利用powerbuilder实现中国式报表的设计方法随着中国经济的不断发展,各个行业的信息化建设也在不断提升。
其中,报表系统是企业信息化建设中必不可少的一部分。
在中国,由于汉字的存在,报表系统的设计与国外有所不同。
本文将介绍利用PowerBuilder实现中国式报表的设计方法。
一、中国式报表的特点中国式报表主要有以下几个特点:1. 汉字排版由于汉字的存在,中国式报表在排版方面与国外有所不同。
汉字的书写方向是从上到下、从右到左,因此,中国式报表的排版也是从上到下、从右到左。
2. 纸张大小中国式报表使用的纸张大小一般为A4或B5,而国外报表一般使用Letter或Legal纸张。
3. 格式排版中国式报表中,每一行数据都有固定的格式,例如,第一列为序号,第二列为名称,第三列为编号等等。
这些格式是在设计报表时就已经确定好的,用户不可更改。
4. 页码设置在中国式报表中,页码的设置与国外有所不同。
在国外,页码一般位于报表的底部,而在中国式报表中,页码一般位于报表的右上角。
二、PowerBuilder报表设计方法PowerBuilder是一款功能强大的开发工具,它可以用于开发各种类型的应用程序,其中包括报表系统。
在PowerBuilder中,可以使用DataWindow控件来实现报表的设计。
1. 创建DataWindow控件首先,需要在PowerBuilder中创建一个DataWindow控件。
在创建DataWindow控件时,需要选择报表类型,可以选择Detail类型或Group类型。
2. 设计报表格式在DataWindow控件中,可以通过拖拽控件的方式来设计报表格式。
在设计报表时,需要注意以下几点:(1)设置纸张大小在DataWindow控件中,可以设置报表的纸张大小。
在中国式报表中,一般使用A4或B5纸张大小。
(2)设置页眉和页脚在中国式报表中,页码一般位于报表的右上角。
因此,需要在DataWindow控件中设置页眉和页脚,并将页码添加到页眉中。
在PB中嵌入Word文档

在PB中嵌入Word文档国防科技大学3院5队98研张涛罗诗途PB(PowerBuilder) 是Sybase公司推出的一种优秀的数据库开发工具,利用它的数据窗口控件可以快速地开发出一个数据管理系统。
现在许多单位很注重报表的格式,需要不同类型的报表,所以必须提高报表格式的多样性。
虽然我们可以利用PB设计出具有打印功能的窗口,但是由于格式是事先规定好的,用户很难根据需要进行修改。
Word是大家熟悉的一种文字处理工具,具有强大的编辑与打印功能。
如果能够将数据源动态地导入到Word文档中,然后在Word中调整和打印,用户的自由度就比较大。
下面笔者以生成用户话费清单为例,介绍一种通过OLE技术嵌入Word文档的方法。
创建模板文件首先,我们建立一个报表样式的模板文件,取名为"用户清单模板.dot"。
根据需要录入静态文本,并在需要插入动态数据的地方插入"书签"。
"书签"名字与PB 数据源中列的名字一致,如图1所示。
图1 模板文件编写程序1.数据窗口d_user和d_cost,分别取自移动电话用户基本信息表和用户话费记录表,数据模型如2. PB和Word通信时,如果向Word中输出汉字,则该汉字后面会出现与汉字个数相同的乱码,所以必须编写函数处理这种情况。
定义全局函数integerf_getcnnum(string aString)。
代码如下:string ls_ch //临时单元string ls_SecondSecTable //存放所有国标二级汉字读音integer li_num = 0 //返回值integer i,jfor i = 1 to Len(aString)ls_ch = Mid(aString,i,1)if Asc(ls_ch) >= 128 then //判定是汉字li_num++i = i+1end ifnextreturn li_num3.创建窗口w_costlist,其中包含两个数据窗口dw_1和dw_2,分别对应数据窗口d_user和d_cost。
PowerDesigner导出Word操作说明

使用PowerDesi gner工具生成数据库表结构
设计Word文档
【摘要】
本文主要阐述了使用Po werDe signe r工具生成数据库表结构设计的W o rd文档步骤,生成方式主要有两种:内置报表模版方式、自定义报表模版方式,一般采用自定义报表模版方式生成。
【关键字】
Word;PowerD e signer;
1.内置报表模版方式
1) 采用Powe rDesigner内置报表直接生成,选择Gene rate Report选项
2) 内置有三种模版供选择(如图所示),可以生成两种格式的报表:H TML/RTF(word),
其它选项参考图示,说明:Print p revie w为预览方式。
3) 模版生成过程图:
4) 内置模版位置路径:Sybase\PowerD esign er 16\Resour ce Files\Report Templa tes 2. 自定义报表模版方式
1) 选择Repo rt Templa tes选项
2) 选择后,会出现内置模版列表:
3) 选择新建后出现如图所示:
4) 输入模版名称,选择模版语言和Phys ical Data Model,点击OK
5) 现在可以按自己的要求构造模版,并保存,以下提供一个样例模版参考:
wordTemplate.rtp
6) 设置好模版后,点击Gene rate Report再生成报表
7) 选择自定义的模版,点击OK:
8) 生成的报表:
参考手册:
Foxit PDF
Document。
使用C++Builder生成WORD的表格

Q:
学 术 论 坛
S ci nce e and T ech nof 0gy I ovaton nn i H er l ad
使用 C++Bul 生成 W D的表格 e d i r OR
程 利
( 中国石 油辽 河油 田公 司勘探 开发 研究 院 摘
辽 宁盘锦
C ++Bul e的wo d 2 h 件 , id r r 一 k. 文 本文详 细 介
t > Co um ns l -> Pr f r e e e r dW i t d hType =w d e e r dW i hPe c nt Pr f r e dt re ;
然 后 用 一 个 1~1 0 内 的 整 数 w设 置 0之 每列 的宽度 :
t ->Ri ght ddi Pa ng=4. 25; t ->Bo t m Pa to ddi ng=2. 5; 8
t ->Spa i c ng=1;
D c me t >I m(); ou ns t n) - e 其 中n W O 是 RD中 打 开 的 文 档 数 。
2创建 WO D R 表格
01V a int n=1: e ra
下 面 的 语 句 将 表 格 第 3 的 高 度 设 置 3 1 行 . 0表 格 的边 框属 性 成1磅 : 8 边框 属性包 括边框 的宽 度和 线形 。 宽 t > ws > tm( ) >He h =1 : 一 Ro 一 I e 3~ i t g 8 3. 4单 元格 边距 表格单元 格的边距 属性的设置 如下 :
powerdesigner连接mysql和导出表到word文档

powerdesigner连接mysql和导出表到word文档PowerDesigner连接到mysql数据库,、查询表之间的关系由于MySQL自己的安装程序不包含ODBC的驱动,所以PowerDesigner是不能连接到MySQL的.需要安装MyODBC开发版3.51来访问.自行下载MyODBC-3.51.11-1-win.exe并安装~打开Powerdesigner,选择【Database】─【configer Connection】点击图标栏的第二个图标,新增数据源图标,弹出创建新数据源对话框,选择用户数据源(只用于当前机器)(U),点击【下一步】按钮,选择的驱动程序为:MySQL ODBC 3.51 Driver ,点击【下一步】按钮,点击【完成】按钮,将弹出一个对话框,输入Data Source Name 、Server、User、Password、Database点击【Test】按钮,弹出Success:connection was made! 对话框。
点击【OK】按钮,会在Configure Data Connections 列表中看到你刚刚建立的数据源,3.1 在powerDesigner中建一个工程,file -> reverse engineer ->Database3.2 选择我们前面(2.4)配置好的connector/odbcClick ->Connect3.3看,数据进来,显示出来了Click ‘OK’正在导入中。
展示一哈关系图:Author:**************如有雷同纯属巧合!PowerDesigner导出表到word一、模版修改在导出表时,powerdesigner默认为我们提供了很多的模版,在工具栏中选择【Report--->Report Template】即可看到所有的默认模版。
如图一:图一模版列表这里我们为了导出powerdesigner中创建的表,在工具栏中选择【Report--->Reports】(快捷键Ctrl+E),然后创建一个New Report,如下图二所以,选择Standard Physical Report,这里选择的标准的模版,点击OK确定。
浅谈在Delphi中使用Word制作报表

Brief Intorduction to Using Word to Create the
Table from Delphi
作者: 陈琦 董玉德
作者机构: 中国科学技术大学计算系,安徽,合肥,230022 中国科学技术大学计算系,安徽,合肥,230022
出版物刊名: 安徽职业技术学院学报
页码: 17-20页
主题词: Delphi 报表 Word
摘要:本文介绍了在Delphi编程中的一种报表解决技巧--使用Delphi中Servers组件实现与Office的无缝结合,将生成报表导入到用户所熟悉的Word中,可使用户自己在Word里进行一些开发商无法了解的复杂的操作.本方法主要通过调用Servers组件上的wordapplication(word 服务器控件)、worddocument(word 文档控件)和wordfont(设word字体的控件),对这三种控件本身的方法进行编程来实现的,是一种较为高效的报表实现方法.。
《PowerBuilder 10.0 应用基础与实例教程》 第06章 数据输出技术

Grid风格、“学生信息”表全部字段。也可将实例4-2的数 据窗口对象d_student复制到当前对象库,另存为d_query。
实例6-4 PB与Excel交互
窗口w_main设计 Title、Icon、MaxBox和MinBox属性。 数据窗口控件dw_1,DataObject、VScrollBar属性。 四个命令按钮,Text属性。 两个单行编辑框sle_1、sle_2和一个多行编辑框mle_1。
数据窗口对象设计d_wg
Grid风格、“学生信息”表全部字段。或者将实例4-2的数 据窗口对象d_student复制过来,另存为d_wg。
实例6-2 生成HTML文件
窗口w_main与代码设计
Title、Icon、MaxBox和MinBox属性。 数据窗口控件dw_1,DataObject、VScrollBar属性。 三个命令按钮,Text属性。 窗口的open事件代码。 命令按钮“生成方法1”的clicked事件代码。 命令按钮“生成方法2”的clicked事件代码。 命令按钮“退出”的代码。 应用程序对象代码。
实例6-1 分组求和结果的图形表示
窗口及编码
建立窗口w_cw,设置标题,其余属性用默认值。 在窗口上放置dw_1,设置“DataObject”属性为
d_dat,调整大小和位置。 对窗口w_cw的open事件编写代码。 为应用程序对象cw编写代码。
运行和测试
对比运行结果和基本数据
运行和测试
实例6-3 输出到word和excel
目标
将PB中的数据输出到Word文档和Excel工作簿中。
技术
微软的自动化技术(OLE Automation),Word、Excel的 VBA功能。
PB中利用OLE控件使用WORD

PB(PowerBuilder)是Sybase公司推出的一种优秀的数据库开发工具,利用它的数据窗口控件可以快速地开发出一个数据管理系统。
现在许多单位很注重报表的格式,需要不同类型的报表,所以必须提高报表格式的多样性。
虽然我们可以利用PB设计出具有打印功能的窗口,但是由于格式是事先规定好的,用户很难根据需要进行修改。
Word是大家熟悉的一种文字处理工具,具有强大的编辑与打印功能。
如果能够将数据源动态地导入到Word文档中,然后在Word中调整和打印,用户的自由度就比较大。
下面笔者以生成用户话费清单为例,介绍一种通过OLE技术嵌入Word文档的方法。
创建模板文件首先,我们建立一个报表样式的模板文件,取名为"用户清单模板.dot"。
根据需要录入静态文本,并在需要插入动态数据的地方插入"书签"。
"书签"名字与PB数据源中列的名字一致,如图1所示。
图1 模板文件编写程序1.数据窗口d_user和d_cost,分别取自移动电话用户基本信息表和用户话费记录表,数据模型如2.PB和Word通信时,如果向Word中输出汉字,则该汉字后面会出现与汉字个数相同的乱码,所以必须编写函数处理这种情况。
定义全局函数integer f_getcnnum(string aString)。
代码如下:string ls_ch //临时单元string ls_SecondSecTable //存放所有国标二级汉字读音integer li_num = 0 //返回值integer i,jfor i = 1 to Len(aString)ls_ch = Mid(aString,i,1)if Asc(ls_ch) >= 128 then //判定是汉字li_num++i = i+1end ifnextreturn li_num3.创建窗口w_costlist,其中包含两个数据窗口dw_1和dw_2,分别对应数据窗口d_user 和d_cost。
在PowerBuilder中利用自动化技术调用Excel处理与打印表格

在PowerBuilder中利用自动化技术调用Excel处理与打印表格摘要Microsoft公司的Office办公软件中的Excel是一种专业的电子表格处理软件,Microsoft公司对它的Office软件系列都提供了对自动化技术的支持,这样就可以通过其他高级编程语言调用Office软件系列,利用其成熟而可靠的技术与功能来轻松实现特定功能。
本文中,将通过自动化技术,实现在PowerBuilder中调用Excel来实现表格的输出与打印。
关键词自动化 Excel PowerBuilder 表格1 问题的提出在为某企业设计电子图文档管理系统中,用户提出要求,要能够快速输出某些电子表格。
在未使用自动化技术之前,该企业使用的是AutoCad软件来一次性将多个表格生成到一个DWG文件中,然后通过绘图仪出图。
这种做法的好处在于能够有效的节省企业的开支,一次性生成大量的表格。
但是,缺点也是明显的:这种做法欠缺灵活性,当遇到只需要输出少量表格的情况时,做法过于复杂。
即这种做法非常适合于大量表格的批量输出,而不适合个别表格的单独输出。
正是在这种背景下,我们提出了使用Excel电子表格处理软件来处理该企业的表格输出问题。
Excel软件是专门为处理各式电子表格而设计,它能够非常高效而专业的处理各式表格,并且非常关键的是:它具有表格计算汇总功能,在这一点上,AutoCad软件是无法相比的。
另外一个原因,在当前的企业中,打印机的使用日益普及,打印速度也日益加快,当多个用户同时需要打印时,可以通过高速的网络打印机来轻松实现,在这一点上,使用Excel也具有一定的优势。
2 自动化技术Microsoft公司提供的自动化技术,简单的说,就是将某一个应用程序的功能(可能是一部分)当作一系列的对象来向其他的外部应用程序暴露(Expose),这个外部应用程序就可以使用这些对象,这个过程就被称为自动化(Automation)。
例如,Excel,我们可以将它的大部分功能当作一系列对象来加以暴露,然后在另外的应用程序中使用这些对象,这就是使用自动化对象来调用Excel完成指定功能的关键所在。
PB中数据窗口打印功能的多种实现方式共5页word资料

PB中数据窗口打印功能的多种实现方式随着计算机技术得到迅猛的发展,计算机管理已经在各个领域普及,社会也越来越离不开信息网络。
各种信息的管理离不开数据库的使用,powerbuilder是一款非常强大的数据库开发管理软件。
很多信息在使用时需要打印出来使用,为此Powerbuilder提供了数据窗口打印功能。
该文将对在powerbuilder中如何实现数据窗口打印功能的几种方式进行说明。
1 单一数据窗口的打印功能实现可以在程序中调用数据窗口的控件的print函数打印数据窗口中的内容,打印内容与数据窗口控件中在屏幕中显示的一致(所见即所得功能),print函数有两种语法使用格式。
1)将数据窗口控件的内容作为一个单独的打印作业把数据窗口控件的内容作为单独的打印作业发送的打印机上的语法格式:dwcontrol.print({canceldialog})其中,dwcontrol为数据窗口控件名称,canceldianlog是可选参数,是打印时是否为用户提供能够取消打印操作的对话框。
如果值是true,则提供对话框,如果值是false,则不提供对话窗口。
使用print函数打印数据窗口时,powerbuilder自动打开打印作业,然后将数据发送至打印机进行打印,打印结束后自动关闭打印作业,这个过程不需要编写然后程序代码。
2)将数据窗口控件的内容作为图形进行打印将数据窗口控件作为图形发送的打印机进行打印的语法格式:dwcontrol.print(jobname,x,y{,width,height})其中,dwcontrol是数据窗口控件名称;jobname是函数printopen 函数返回的作业号;x是数据窗口左上角在打印页上x坐标位置;y同x 作用一致,表示数据窗口左上角在打印页上y坐标位置;width指定数据窗口打印宽度;height为指定数据窗口打印高度。
Width和height参数可以省略,如果省略,打印按照数据窗口实际数据打印。
PowerDesigner15表结构word形式导出

PowerDesigner15
1.首先新建报告模板
语言选择简体中文
直接点完成就行,接下来会弹出一个保存界面,取消就行报告模板会出现在左侧的菜单栏
右侧会有默认的报告选项,如图所示
如果不需要更改输出列,报告模板就已经创建好了
然后在左侧菜单栏选择model双击,回到model的界面,直接生成报告即可
如果需要更改列清单,在左侧菜单栏双击report1,到report1编辑界面,将右侧默认的设置先删除
删完之后应该是这样
然后,选择下图中的两项(图片放大看就行),添加到右侧的Secftion_1下,左键选中拖动到Secftion_1即可
添加完成,如下图
选中列清单,右键Layout
然后选择想要显示的列(打钩即会显示)
Ps:特别注意width要调整好,不然很难看。
PB 数据窗口数据导出到word文件中

PB 数据窗口数据导出到word文件中PB 数据窗口数据导出到word,excel博客分类: powerbuilderExcelJ#WindowsPB 数据窗口数据导出到word,excel, excel 可以自定义修改excel文档的列宽对齐方式,字体样式等// dwsave2word 调用oleglobal type gf_exportdata2word from function_object end typeforward prototypesglobal subroutine gf_exportdata2word (datawindow ad_datawindow) end prototypesglobal subroutine gf_exportdata2word (datawindow ad_datawindow);stringls_filepath ls_filepath=gf_getfilesavename() OleObject OleObjectWord OleObjectWord=Create OleObject // 连接wordif OleObjectWord.ConnectToNewObject(\ Messagebox(\提示\连接错误!\return end ifOleObjectWord.visible=false //word文档在操作数据过程中是否可见Long col_colnum,col_rownum Constant Long wdTableBehavior=1 Constant Long wdAutoFitFixed=0 Constant Long wdCell=12 String str_value// 得到数据窗口数据的列数和行数(行数应该是数据行数+1)col_colnum=Long(ad_datawindow.object.datawindow.column.count)col_rownum=ad_datawindow.rowcount() + 1 // 先在word文档中画好表格SetPointer(HourGlass!) OleObjectWord.Documents.AddOleObjectWord.ActiveDocument.Tables.Add(OleObjectWord.Selection.Range,& +col_rownum,col_colnum,wdTableBehavior,wdAutoFitFixed)string ls_colname integer i,j,k,l for i=1 to col_colnum //得到标题头的名称ls_colname=ad_datawindow.Describe('#'+string(i)+\strvalue=ad_datawindow.DEscri be(ls_colname+\OleObjectWord.Selection.TypeText(str_value)OleObjectWord.Selection.MoveRight(wdCell) Nextad_datawindow.setRedraw(false)OleObjectWord.Selection.MoveLeft(wdCell) SetPointer(HourGlass!) for i=2 to col_rownum for j=1 to col_colnumad_datawindow.Scrolltorow(i - 1) ad_datawindow.SetColumn(j)strvalue=ad_datawindow.GetItemstring(i - 1,j) if isnull(str_value) then strvalue='' end ifOleObjectWord.Selection.MoveRight(wdCell)OleObjectWord.Selection.TypeText(str_value) next nextad_datawindow.setredraw(true) Constant long wdFormatDocument=0 // 保存新建的文档OleObjectWord.ActiveDocument.SaveAs(ls_filepath,0,false,\e,false) boolean lb_existlb_exist = FileExists(ls_filepath)if lb_exist thenmessagebox(\提示\数据已经保存到\end if //断开ole连接OleObjectWord.DisconnectObject() destroy OleObjectWordend subroutine// dwsave2xls 调用oleglobal type gf_dwsavetoexcel from function_object end typeforward prototypesglobal function integer gf_dwsavetoexcel (datawindow adw) end prototypesglobal function integer gf_dwsavetoexcel (datawindow adw); string xlsname, named integer value string col_del,first_delvalue = GetFileSaveName(\另存为\ xlsname,named,\ Files (*.XLS), *.XLS\ if value = 1 thenadw.saveas(xlsname,Excel!,TRUE) else return 2 end ifconstant integer ppLayoutBlank = 12 OLEObject ole_objectole_object = CREATE OLEObjectinteger li_retli_ret = ole_object.ConnectToObject(\ IF li_ret <> 0 THENli_ret = ole_object.ConnectToNewObject(\ IF li_ret <> 0 THENmessagebox(\错误\无法连接!~r~n错误号:\ + string(li_ret)) Return 0 END IFole_object.visible = False END IFpointer oldpointeroldpointer = SetPointer(HourGlass!)ole_object.Workbooks.open(xlsname) ole_object.WorkSheets[1].Activatelong columncount, rowscountcolumncount = long(adw.object.datawindow.column.count) rowscount = adw.rowcount() + 1string ls_colname[],ls_value integer i,jlong handlehandle = OpenChannel(\ xlsname)// 将列名转化为中文名称,即标题头名称 for j = 1 to columncountls_colname[j] = adw.describe(\ ls_value =adw.describe(ls_colname[j]+\// ole_object.activesheet.cells[1,j].value = ls_valueSetRemote(\ ls_value, handle) next开始的方法datawindowchild ldw_child long ll_foundFor j = 1 To columncount //col_del标识将要删除不可见的列if adw.Describe(\ + String(j) + \ =\ thenIF integer(j)<27 then //当列小于26时,excel中用A-Z表示列号first_del = char(integer(J)+64) else//大于26,小于等于52列时,AA-AZ,大于52列时可能性不大未做考虑first_del= \ end ifcol_del=col_del + first_del +\ first_del+\ \continueend if//当列可见且为下拉数据窗口时,数据值转化为显示值If adw.Describe(\ + String(j) + \ = 'dddw' Thenadw.GetChild( ls_colname[j], ldw_child )for i=1 to rowscount - 1//\是我通常用下拉数据子窗口的值以及显示值 //更通用的方法是用DDDW.DataColumn,DDDW.DisplayColumn得到 ll_found = ldw_child.Find(\ +\ '\ 1, ldw_child.RowCount()) if ll_found>0 thenSetRemote(\ handle)感谢您的阅读,祝您生活愉快。
PB9.0打印功能

elseif rb_pagearrange.checkedthen //输入范围
str_temp = sle_pagearrange.text
end if
sle_pagearrange.enabled = false //页面范围编辑框无效
ddlb_printwhat.SelectItem(1) //默认为“所选页面”
//打印方向
integer li_temp
li_temp = integer(idw_toprint.object.datawindow.print.orientation) //取出设计时的方向
//纸的尺寸
li_temp= ddlb_paper.FindItem(ddlb_paper.Text,0)
//第li_temp项
idw_toprint.object.datawindow.print.paper.size=li_temp
closewithreturn(parent,1)
endif
//纸的方向
li_temp=0
if rb_landscape.checked then
li_temp=1
elseif rb_portrait.checked then
li_temp=2
endif
idw_toprint.object.datawindow.print.orientation=li_temp
parent.eventue_initcontrols()
在无线按钮rb_portrait的clicked事件中编写如下脚本:
Power+Builder中利用BLOB数据类型实现Word文档的处理

在应用的o二事件中 p 设置数据库连接程序:
sl .B gc D MS=" S Mi st L e" a M S c o S Sr r o r f Q e v sl .a a "e ob bs =dmd " gc Dl e a a sl .e ra e re eNm =evr gcSr a v s sl .ol = e m d sma e gc Lg u a sl .g s ueps a =sras gcl p s ao sla u o i=t Cmmt re gc. l Ao u sl dpr a q- b m二”oncsig dn=e d;i C netr =' dmobu tn s d二” ue- +sr nm +; d "ue s+'” a e" w -+ s s" p 甲a 2. 窗 口及相关控件的定义 .2 2 由于修改数据是利用 O E控件实现 , 以首先在窗 口中插人 L 所 一个与 WO D相关联的 OL R E控件及三个命令按钮。所用控件说 明如表 2所示
利用SL Q 命令中的 UDT BO P AELB命令来实现。使用UD T- PAE
BO L B命令可 以将 BO L B数据类型变量中存放的数据传递给数据 库当前记 录相应的字段保存。而要将 BO L B数据类 型从数据库 中 取出则可以使用 SL C B O E E T L B命令 ,使用 SL C B O EE T L B命令 可 6将指定记录中相应的字段数据传递给 BOB数据类型变量 l L 对于BO B数 据类型变 量的修改 则可 以借助 Pwr ie L oe B l r ud 提供的相应 的符合工业标 准的AcvX控件 , te i 利用 O E技术集成 L 在应用程序 中使用。通过可视化 O E控件 , L 可以将 B乃B数据类 T 型变量的值进行编辑 修改, 可以将其内容赋给 B O 也 L B数据类型
PowerDesigner-制作Word导出模版

PowerDesigner-制作Word导出模版
定制导出模版
当然这不是我们想要的word,下⾯看如何做⼀个⾃定义模版
1. 在⼯具栏中选择【Report -->Reports】,如下图
点击第⼆个图标创建⼀个Template,如下图
2. 选中Physical Data Model,OK确认
在Available items区域找到List of Tables和List of Table Columns,双击添加到Template items区域
⼀般导出word也就只需要这两个
List of Tables :所有表的清单,默认显⽰表名和中⽂描述,⼀般不需要改动
List of Table Columns :表的列信息
3. 右键List of Table Columns,如下图所⽰
Format:字体设置,⼀般⽤默认的
Layout:需要显⽰的属性和显⽰的宽度
Selection:排序和属性过滤,⼀般⽤默认的
4. 设置导出word⽂档的页眉和页脚,右键模版如下图,不爽的是第⼀和第⼆页的页眉页脚这个设置不了
5. 设置title page,右键report如下图
选了no title page竟然没效果,郁闷。
编程实现PB数据窗口与word表格的相互转换

编程实现PB数据窗口与word表格的相互转换作者:望强在用PowerBuilder开发应用程序时,有时用户要求把外单位以Word表格形式提供的数据导入到数据窗口中,有时又需要把数据窗口导出成Word表格。
用过PB的人都知道,虽然PB的数据窗口对象提供了ImportFile和SaveAs这样两个函数,但是他们都不支持Word表格的导入导出,笔者只好另辟蹊径,现将实现的方法跟大家作个介绍。
一、将Word表格中的数据导入到数据窗口中基本思路:在Word文档里选中要导入的表格行,点鼠标右键复制到剪贴板,再从剪贴板粘贴到一个多行文本编辑框中,行列数据就变成了以回车符和制表符分割的纯文本,依次取出插到数据窗口中既可实现数据导入。
具体实现:在需要此功能的窗体上添加一个多行文本编辑框mle_1,visible属性设为False,运行时不显示;再添加一个按钮,名称Name设为cb_paste,文本Text设为“粘贴自word”,按钮cb_paste 的clicked事件对应的script代码如下:int row,p1,p2,istring str,valmle_1.Paste()//将剪贴板的内容粘贴至mle_1中do while mle_1.text<>""p1=pos(mle_1.text,"~r")//根据回车符切出行记录字符串if p1>0 then//有一个回车符则在数据窗口中增加一行记录row=dw_1.insertrow(0)str=left(mle_1.text,p1 -1)//去掉字符串结尾的回车符i=1do while str<>""p2=pos(str,"~t")//根据制表符Tab切出列字符串if p2>0 theni=i+1val=left(str,p2 -1) //去掉字符串结尾的制表符dw_1.setitem(row,i,val)//设置新插入行的列值str=mid(str,p2+1)else//将字符串剩余部分赋给最后一列i=i+1dw_1.setitem(row,i,str)exitend ifloopmle_1.text=mid(mle_1.text,p1+2)elseexitend ifloopif dw_1.update()>0 then //保存导入的数据commit;elserollback;end if二、将数据窗口导出成Word表格基本思路:将数据窗口的数据逐行读出,以制表符区分列,以回车符区分行,拼接成一个长字符串,复制到剪贴板中;然后动态创建一个OLE对象,跟事先准备的一个Word临时文档关联,将剪贴板中的内容粘贴到该文档,利用Word可以将文字转换成表格的功能,实现数据导出成Word表格。
用WORD做DELPHI报表输出工具

用Word做Delphi报表输出工具用Word做Delphi报表输出工具崔先迤笔者在实际应用中发现,报表的内容一般很少变动,但其字体格式及版式是经常变动的,而且有时用户为了某种需要,不想修改数据库的真实内容而又要改变报表内容。
如果用ReportSmith可以解决前者问题,但对于后者则无能为力了,且其界面是英文的,不合用户习惯。
如果用3.0中的Qreport的报表部件,则两者都不能实时解决,必须修改原代码后重新编译才能使用。
而使用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);varWordPath: String;beginif(not DdeExample.OpenLink) then {判断是否巳动态链接}beginif(FindWindow(′OpusApp′, nil)=0) thenbeginWordP ath := ′C:\msoffice\winword′;if(WordPath=′′) thenShowMessage(′中文Word未安装或未设置路径,请安装设置Word中文版。
′)elsebeginDdeExample.ServiceApplication := WordPath+′\Winword.exe′;if(DdeExample.OpenLink) {如果巳动态链接执行宏命令}then DdeExample.ExecuteMacroLines(Cmds,False)else ShowMessage(′无法启动Word中文版!′);DdeExample.ServiceApplication := ′WinWord.exe′;end;endelsebegin{如果巳动态链接执行宏命令}DdeExample.ExecuteMacroLines(Cmds,False);end;endelseDdeExample.ExecuteMacroLines(Cmds,false);end;在private声明区里加入如下:procedure ActiveWord(Cmds: TStrings);3)在Form1中加入一个按钮Button1,在其onclick事件里写如下代码:procedure TForm1.Button1Click(Sender: TObject);varCmds:TStringList;{创建Cmds}TempItem1,TempItem2:String;begincmds:=TStringList.Create;cmds.Clear;TempItem1:=′数据项一′;TempItem2:=′数据项二′;with Cmds dobeginClear;Add(′[FileNew.Template = ″Example.Dot″]′);{打开模板文件Example.Dot}Add(′[AppMaximize]′);{文档最大化}Ad d(′[SetFormResult ″Item1″,″′+TempItem1+′″]′);{将数据TempItem1传给表单域Item1}Add(′[SetFormResult ″Item2″,″′+TempItem2+′″]);{将数据TempItem2传给表单域Item2}end;WordActive(DdeExample,Cmds);{调用自定义过程}Cmds.Free;{释放Cmds}end;运行这个程序,单击Button1,大家可以发现Word被启动了,屏幕上出现了&ldquo:数据项一&rdquo;数据项二&rdquo两个数据项。
在powerbuilder中实现excel表格的导入和导出

在powerbuilder中实现excel表格的导入和导出
在powerbuilder中实现excel表格的导入和导出
梁倩
【期刊名称】《硅谷》
【年(卷),期】2008(000)013
【摘要】使用PowerBuilder编程软件,结合OLEObject技术和PowerBuilder 的数据窗口,实现将excel报表导入到数据库中以及将数据库中的数据导出到excel文件中的功能.
【总页数】1页(62-62)
【关键词】PowerBuilder;excel;OLE对象;数据导入导出
【作者】梁倩
【作者单位】天津开发区职业技术学院,天津,300457
【正文语种】中文
【中图分类】TP3
【相关文献】
1.PowerBuilder导入导出Excel数据方法详解 [J], 方小勇; 申婷
2.PowerBuilder实现数据窗口向EXCEL表格传递数据 [J], 王晓璐; 窦大河; 陈桂兰
技术实现网站数据与Excel表格的导入与导出 [J], 王秀红
4.在PowerBuilder中自动调用Excel处理与打印表格 [J], 何昱
5.在PowerBuilder中利用自动化技术调用Excel处理与打印表格[J], 牟丹以上内容为文献基本信息,获取文献全文请下载。
在PowerBuilder中利用Word输出报表

在PowerBuilder中利用Word输出报表
刘笑迎;陈嘉
【期刊名称】《黄河水利职业技术学院学报》
【年(卷),期】2006(18)4
【摘要】在PowerBuilder中,可以通过OLE-Object对象调用常用办公软件Word,实现复杂报表设计和编辑输出.其步骤为:首先,创建一个带有标签的Word文档;其次,在PowerBuilder中创建OLE-Object对象,用来连接已创建好的word文档;最后从PowerBuilder的数据窗体中提取数据,将其输入Word表格.
【总页数】2页(P53-54)
【作者】刘笑迎;陈嘉
【作者单位】黄河水利职业技术学院,河南,开封,475004;黄河水利职业技术学院,河南,开封,475004
【正文语种】中文
【中图分类】TP311.52
【相关文献】
1.浅析中利用Word、Excel输出报表
2.Powerbuilder中利用通用过程生成不同的报表结构
3.用OLE自动化将数据库中的内容定位输出到WORD报表
4.PowerBuilder中Excel工作表的报表输出
5.PowerBuilder中利用WORD编辑数据库中的大文本
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
22 在Pwrud: . oe ie中创建O E Bl L 对象并初始化 / 导出姓名 / 在 Pwr ie 中创建 OE对象主要是应用 ud: oe l B L d = ( u b e bc u r e姓 dc r s oe. nm [ o t w s a . t s a e m r i e j e OE bc对象的 CneTOj t L - e Oj t on t bc 函数和 Cn 名]; co e o- ) nc oE Oj t eTN W bc 函数。OE b cCneTOj t t e LOj t onc obc e. t e ide< +t n f > o h e 函数用于将 O E服务器应用程序 中的对象与 L cpod o) lba ( e i rd OE bc类型的变量关联, LOjt e 并打开服务器应用程 / 选择 w d r文档中定义好的标签, / o 将剪贴板中
oo j t cvDcmn Bo a s se Ateou et o mr 川 . lt l bc i e . e . k k ec o o e. tnps ) eco. ( l bc sei ae e t l j t
c b r r s) t / l od t/清空剪贴板内 i a( r p e 容
刘笑迎, 嘉 陈
( 黄河水利职业技术学院, 河南 开封 450) 704
摘 要: oe ud 中 可以 在Pwr ie , 通过OE bc对象 B lr L - t 调用常 公软件W r 实现复 报表设 Oj e 用办 o, d 杂
计和编辑输出。其步骤为: 首先, 创建一个带有标签的Wo 文档; r d 其次, oe ud: 创建 在Pwr ie 中 Bl
序, 维护相当方便。参考文献 :
川 吴洁明 .oe udr 应用与开发 [ ] 北京: Pwr ie 60 Bl . M. 清华大 学出版社, 9 18 9
e d n i f e d n i f
o o j t ib Tu Vs l= r l bc e e . e i e
例, 代码为:
it re t w; n c rn一o u
为了能使数据传人表格中, 我们在需要显示数据
的 方插 书 。 中 en eang等 地 ,人 签 图 的,, , , 都 xa ni a m t e o
是在空格处添加的书签名称。
cr n r d c ra io. o (; u et wus bs n rG t w ) r o w= e e f e R ay e n d ; o
OE bc对象, L - t Oj e 用来连接已 建好的wr文 最后从Pwr ie的 创 o 档; d oe ud 数据窗 提取数 B lr 体中 据,
将其输入 Wo 表格。 r d
关键词: L ; 一 bc W r Cpo d) O E E Ojt o ; a 函数 O L e ; lb r d i 中图分类号:P1. 文献标识码: T315 2 B . 文章编号: 0 - 8X20)4 05 - 2 1 8 6 (060 - 03 0 4 0 0 引言
创建该对象的服务器应用程序能够识别” 是如何在Pwrud: 调用W r 在Pwrudr 序中使用 “ oe ie中 Bl o 。 oe ie d Bl
中调用 W r可以使用多种方法,其中通过 O E 的属性或方法。 o d L-
L 一 b c对象链接W r e o d Ojt bc对象操纵W r, e o 编写程序简单, d 易于掌握, 2 通过O E Oj t 非
并在表格中加人书签。 b dg是Mcst 的 软件的 规范, 档, e i) iof dn ro推出 构件 技术 目
在表格中插人书签的具体方法为: 1将光标定 () 2在文档中 单击 许多大的WN O S ID W 应用程序都是围 绕它设计的。 位在表格中想要插人书签的地方。() 从 插人” “ — 书签” 命令, 打开“ 书签” 对话框, 书 在“ 用户角度讲,O E是一种能使他们共享不同应用程 “ L 对话框最上方的“ 书签名” 编辑框中输人要添加的 序信息资源的技术, 利用它, 用户能够构造声、 图、 签” 文、 例如nm , ae单击“ 添加” 按钮即可在光标所 像、 影于一体的复合文档。从开发商的角度看, L 书签名称, OE 是一个可解决许多难题的技术( ID W 开发商 在位置插人一个书签标志。 如WN O S
黄河水利职业技术学院学报
20 年第 4 06 期
改变都可以在“ 书签” 对话框列表中看到。 内 Cpod) 数只 制Si 类型的 容。 lb r 函 能复 t g i a( r n 变量, 利用上述方法, 我们在 d 、 :建立名为 ue dc 所以需要将数字、 期等非字符串类型变量先转化为 s . 的 ro 日 Wo 文档。在文档中建立表格( 10 r d 见表 ) Si 类型 再 lb r ) 数。 t g 后, 用Cp a ( r n iod 函 表 t 用户基本信息 这里以从数据窗体 dc r s io的当前行、 w u b e r s a n e f T be Usrs sc f r t in a l 1 e ' b i i o ma o a n 姓名列提取数据, 并写人 W r表格中nm 书签为 o d ae
/ 连接 w r o / d
ioojt o co jt ” wr . eT bc“ "o. f bcCn tO e( , d l e e n a la n) 0 n p it " < t pci > h o e
dso o oj e et ety b c r l
io oe. ete bc " r ton tn oe ( o . f bc c co w j t w d l j n e Wo 对象是将数据库中数据写人 W r r d o d中的一种实 apci " > 0 n plao )< t itn h e 现方法。 它实现了复杂报表的制作和查询。 常应 在日 ,` D00 O Msg o( O E ea B ’ L 错误’ W R 20 无法连 se x
第 1卷 第 4 8 期
20 年 1 月 06 0
黄河水利职业技术学院学报
Junl Y l w vr nevnv c n a Is tt ora o el R e C srac T h i l tu f o i o e c ni e
Vo. No 4 l1 8 .
20 06
在 Pwrudr oe ie中利用Wo 输出报表 Bl r d
e d n i f
把该程序关联到OE Oj t L 一 bc对象, e 否则, 就启动一 个W r程序并使之关联到OE Ojt o d L 一 bc对象。 e 例如
/ 导出性别、 民族、… 方法完全相同 / ・… ・
24 删除OE Oj t . L 一 bc对象 e 在P e ud 中 o r ie 创建。E Oj, w B lr L 一 bc e 对象, 用来连接 把数据写到W r o 后, 使用dc n tjt d 可以 io eoe s n cbc 刚创建好的W r文档。代码为: o d ) 数断开连接, (函 然后使用d ty er 方法删除。 - so l e OE bc l bc t e et L O j o o j e o e 对象。其代码为: bc jt 二 R A E Oj t o oj t C E T O E b c l bc e e L e wru = e c dc ncbc ) lo e. o eoe ( g st o b t i n tj t el j s
o o e. es d " /s. ) o mn. ( : r o" l b c Dc tAd d u de e t u j e
2 3 写数据到 Wo . r d
写数据到 o W r,即从 Pwrud: d oe ie的数据窗体 Bl 中提取数据, 将其写人 W r表格中 应的 o d 相刘 标签处。 []刘育楠 . e udr 2 Pwr ie 70开发实例详解[ ] 北京: o B l . M 电子 由于 Pw Bie不能直接传递参数到 Wo , rud: oe l r d 工业 出版社 ,0 1 20
表进行探讨。
来便有些困难。W r是 目 o d 前世界上最流行的文字编 辑软件, 使用它可以很方便地绘制和编辑各式各样精 美的表格。 如果将 Pwrud: W r结合起来, oe ie和 o Bl d 即 在 Pwrudr oe ie 中利用 W r完成报表生成, Bl o d 可以灵 活、 方便、 快速地建立各种复杂的报表。 利用 Wo 完成报表生成, r d 需要解决的关键问题
常实用。
21 创建一个 W r文档, . o d 加入相应的书签 为了使 P e ie 中的数据能从 W r wrudr o Bl o d中输 1 O E技术概述 L 我们需要事先创建好一个包含有表格的Wo 文 r d OE对象链接与嵌套, bc L k g E - 出, L( Oj t i ad e in n m n
序。 LOjt on t N W bccsae函 OE bc CneT E Ojtls m) 数 的内容粘贴到标签所在位置。 e. co e (an
用于在指定的 O E服务器应用程序中创建一个新的 L
OE L 对象, 并将它与OE Ojt L 一 bc类型的变量关联。 e
在实际应用中, 需要将两个函数组合起来用。 如果当前系统中有 W r程序正在运行, o d 则直接
OE Oj t L c是 OE中一个不可视的对象。 L一b e 是为
O E自 L 动化而设计的。 oe ud: Pwr ie就是利用它来实 Bl 现操纵 W r o d的目的的。编译程序可以接受 O E L-
Ojt bc对象类型的任何属性名、 e 函数名及参数, 但它
并不知道这些属性或函数是否有效。因此, 可以在程
OE自动化是指开发人员在自己的应用程序中 L L 实现 “ 远程控 e作为最流行的数据库系统开发工具 使用 OE服务器应用程序的命令集, Pwrud: oe i Bl OE服务器功能。它根据不同的开发工具有两种 之一, 以其开发效率高、 成本低被广大应用软件开发 制”L 实现方式,一种是将 O E L 对象直接放在窗口的O E L 人员所重视。 然后在程序中操纵这个对象; 另一种是在程 Pwrud: e数据窗口的数据提取能力非常强 控件中, oe i Bl L 大, 利用它可以方便地创建一些打印报表, 但对于复 序中创建一个 O E对象。本文主要是对利用创建 L oe ie 中利用 W r输出报 Bl o d 杂的报表或需预览调整的报表, oe udr Pwr ie实现起 O E对象来实现在 Pwrud: Bl