powerbuilder函数实现数据表导出到Excel中

lls115163com 2020-02-10 08:42:22

//outexcel(dw_1)

//global function integer f_outputtoexcel_new (datawindow dw_1);
//函数名:out_excel
//输入: dw_1 - datawindow,指定的数据窗口
//返回值: Integer
constant integer ppLayoutBlank = 12
OLEObject ole_object,xlapp//定义一个类
// 创建这个类的实例------OLE_Object和xlapp
ole_object = CREATE OLEObject
xlapp = CREATE OLEObject
/////////////////////////////////////////////////////////////////////////
integer li_ret
long i,j,k
// 连接------ConnectToObject
li_ret = ole_object.ConnectToObject("","Excel.Application")
IF li_ret <> 0 THEN
// 如果Excel还没有打开,则新建--------ConnectToNewObject
li_ret = ole_object.ConnectToNewObject("Excel.Application")
if li_ret <> 0 then
MessageBox('OLE错误','OLE无法连接!错误号:' + string(li_ret))
return 0
end if
//ole_object.application.workbooks.open("e:\bank\lls2.xls")
ole_object.Visible = True
END IF

ole_object.Workbooks.Add
xlapp=ole_object.application.activeworkbook.worksheets[1]//xlapp.Activate//设置第1个工作表为激活工作表 /

long numcols,numrows
numcols=long(dw_1.object.datawindow.column.count)
//得到数据窗口数据的列数与行数(行数应该是数据行数 + 1)
numrows=dw_1.rowcount()
//得到数据窗口数据的列数与行数(行数应该是数据行数 + 1)

//Excel 中 第一个 字段的名称“序号”
xlapp.cells[1,1]='序号'

//写表体
for i=1 to numcols
dw_1.setcolumn(i)//设置当前字段
xlapp.cells[1,i+1]=dw_1.GetColumnName()//取出当前字段的名称
ls_col =trim(dw_1.GetColumnName())
for j=1 to numrows
if i = 1 then
xlapp.cells[j+1,1]="=row()-1"
xlapp.cells[j+1,i+1]=dw_1.object.data[j,i]
elseif Match(ls_col, "身份证") then //判断是否是:“ 身份证字段”
xlapp.cells[j+1,i+1]="'"+string(dw_1.object.data[j,i])
else
xlapp.cells[j+1,i+1]=dw_1.object.data[j,i] //写出表的内容
end if
next
next

//powerbuilder 选中Excel中的所有数据 画框线
xlapp.UsedRange.Borders(1).LineStyle = 1
xlapp.UsedRange.Borders(2).LineStyle = 1
xlapp.UsedRange.Borders(3).LineStyle = 1
xlapp.UsedRange.Borders(4).LineStyle = 1
xlapp.UsedRange.RowHeight=37//*********1/0.035 (设定行高为1厘米,1磅=0.035厘米)
//设置页脚 第&P页
xlapp.PageSetup.CenterFooter="第&P页"

//设置页面shuiping居中
xlapp.PageSetup.CenterHorizontally=True
xlapp.UsedRange.font.name= "宋体 "//设置字体
xlapp.UsedRange.Font.Size= "11"//设置字号

///////////////////////////////最后划分范围 否则xlapp.UsedRange 会出错!!/////////////////////////////

xlapp.Rows("1:1").font.name= "黑体 "//第一行
xlapp.Rows("1:1").Font.Bold=True //第一行 首行字体变为“粗体”
xlapp.Rows("1:1").HorizontalAlignment = 3//第一行 1:居左 2:居右 3:居中
xlapp.Columns(1).HorizontalAlignment=3 //第一列 居中

xlapp.Cells.Select//全选表
xlapp.Cells.EntireColumn.AutoFit//excel自动调整单元格宽度
xlapp.Range( "a1:a1").Select //选择A1单元格

/////////////////////Shutting down and disconnecting from the server/////////////////////////////////////

//ole_object.Quit() //退出Excel文件
ole_object.disconnectobject()
xlapp.disconnectobject()

DESTROY ole_object
DESTROY xlapp
return 1
...全文
1127 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hunter403 2020-05-22
  • 打赏
  • 举报
回复
好用的就是dw2xls
niushitana 2020-05-09
  • 打赏
  • 举报
回复
关注一下,也想知道这个的答案。
longdrang 2020-05-06
  • 打赏
  • 举报
回复
不想搞太麻烦的可以借鉴使用
  • 打赏
  • 举报
回复
别这样,老哥,导出excel都用dw2xl吗?
haif1978 2020-04-25
  • 打赏
  • 举报
回复
找个PBToExcel 的pbd 就好了!
lls115163com 2020-02-10
  • 打赏
  • 举报
回复
我实际是使用的类实现的。
数据窗口源码介绍 (举例见d_dbit_example.srd,测试数据库为PB自带的EAS Demo DB V120) 1.第一行:release 12; 数据窗口所属PB的版本号,如果想把高版本的datawindow导入低版本的PB要修改此数字; 2.datawindow()行 通常用修改processing属性,可以把你的数据窗口由grid变成freeform或其它类型 例:freeform:0 grid:1 3.header()行 可以整行复制粘贴,并命名为header[1],header[2],这样可以让数据窗口有多个header 4.table()行 这里全是定义的数据属性,是setitem,update,object.data等方法访问的根源 如果存在table()里的column,数据窗口里可以不存在任何对象,仍然可以访问数据窗口的数据 如果想创建一个空的数据窗口,可以只定义: release 12; table() 5.table(column行) 是第几个column,它的ID就是多少,其也定义了是否可以update时和更新到数据表的字段名 6.table(retrieve行) 检索数据时使用的SQL语句,可以通过setsqlselect或modify("table.sqlselect")方法去动态修改 修改后要重新定义数据窗口的更新属性 7.column()行 id即是对应table(column行)里的行次,名称(name)可以随便命名,也可以没有,则默认为table(column行)里的name 8.compute()行 计算列,可以通过表达式计算显示特定值(具体函数可以见共享里的画笔函数). 9.text()行 有时可以代替计算列; 通过定义text的表达式,可以实现一列显示两个字段值,注意结果必须要转换成string类型(而column和compute则不行); 10.htmltable()行 按照格式导出(saveas)html文件,为了保证格式的完整,数据窗口的单位最好设置成pixels GenerateCSS='1' //保持格式及颜色 Border='0' //不要table边框 CellSpacing='0' //单元格无间距(此项在界面上经常设置不上) 注: (1)Grid生成标签,Freeform生成
+ 标签; (2)生成htmltable时,不知为何会在CSS的开始自动加一个分号";",导致excel等浏览器打开不能正常显示格式; (3)band为foreground或background的对象导不出来,可以动态修改后再导出. 11.export.xml()行 定义导出xml文件的格式,并为模板保存名称 使用时一定要设置usetemplate值 12.import.xml()行 定义导入xml文件的格式,并为模板保存名称 使用时一定要设置usetemplate值 13.表达式介绍 略 14.其它也略
数据库设计工具 摘要 数据库设计在运算机软件开发进程占据着超级重要的地位,因此数据库设计工具的重要性不言而喻。本文介绍的数据库设计工具有PowerDesign、ERWin、 和BDB,介绍了它们的特点、进展状况及优缺点等,本文着重分析BDB。 关键词:数据库;设计工具;BDB 引言 随着数据库规模日趋庞大,数据库设计者所面临的问题也愈来愈复杂,她们必需处置各个用户对数据库结构和内容的不同观点,衡量不同应用关于数据库组织和存取的不同需求,和大量的结构信息和数据之间的复杂关系,面对这种设计环境,传统的手工设计方式已经不能适应。因此随着数据库理论研究的深切和设计实践的进展,显现了很多的数据库设计工具,自动实现大量设计工作,提高了工作效率。 正文 数据库设计工具全文共4页,当前为第1页。 PowerDesign:PowerDesign是Sybase推出的主打数据库设计工具。PowerDesign致力于采纳基于Entiry-Relation的数据模型,别离从概念数据模型(Conceptual Data Model)和物理数据模型(Physical Data Model)两个层次对数据库进行设计。概念数据模型描述的是独立于数据库治理系统(DBMS)的实体概念和实体关系概念。物理数据模型是在概念数据模型的基础上针对目标数据库治理系统的具体化。利用Power Designer能够制作数据流程图、概念数据模型、物理数据模型,还能够为数据仓库制作结构模型,也能对团队设计模型进行操纵。它能够与许多流行的数据库设计软件,例如PowerBuilder,Delphi,VB等相配合使缩短开发时刻和使系统设计更优化。power designer是能进行数据库设计的壮大的软件,是一款开发人员经常使用的数据库建模工具。 数据库设计工具全文共4页,当前为第1页。 ERWin:ERWin 的全称是AllFuusin ERwin Data Modeler,是CA公司AllFuusin品牌下的工具,支持各主流。 和它类似的BPWin,是CASE工具的一个里程碑似的产品。ERWin界面十分简练美观,也是采纳ER模型,若是是开发小型数据库,极力推荐ERWin,它的Diagram给人的感觉十分清楚。在一个实体,不同的属性类型采纳可定制的图标显示,实体与实体的关系也一目了然。ERWin不适合超级大的数据库的设计,因为它对Diagram欠缺更多层次的组织。 :这是一款专为MySQL设计的ER/工具。它是闻名的数据库设计工具DBDesigner4的继任者。能够用MySQL Workbench设计和创建新的数据库图示,成立数据库文档,和进行复杂的MySQL 迁移。MySQL Workbench是下一代的数据库设计、治理的工具,它同时有和商业化的两个版本。MySQL Workbench 为、开发者和系统计划师提供、成立、和功能。它包括了用于创建复杂的数据,正向和逆向,也能够用于执行通常需要花费大量时刻和需要的难以变更和治理的文档任务。MySQL工作台可在,和上利用。 数据库设计工具全文共4页,当前为第2页。 BDB:Berkeley DB(BDB)是一个高性能的嵌入式数据库编程库(引擎),它能够用来保留任意类型的键值对 (Key/Value Pair),而且能够为一个键保留多个数据。Berkeley DB能够支持数千的并发线程同时操作数据库,支持最大256TB的数据。BDB提供诸如C语言,C++,Java,Perl,Python,Tcl等多种编程语言的API,而且普遍支持大多数类Unix操作系统和Windows操作系统和实时操作系统(如 VxWorks)。 数据库设计工具全文共4页,当前为第2页。 BDB的要紧功能及特性:1,数据库设计。快速成立数据库模型。支持正向工程和反向工程;支持数据库模型和实体数据库之间的比对更新和双向同步。2,数据库部署。自动创建数据库部署程序。除常规挪用外,在BDB还提供了外部命令行挪用数据库自动安装支持,通过该功能可把数据库部署集成到软件安装程序。3,数据库自动升级。通过BDB进行数据库自动升级部署。可在不阻碍数据表数据的前提下进行数据库自动升级。4,数据库迁移。完整的数据库迁移方案。可进行跨数据库平台迁移。可迁移的数据对象包括:数据表,索引,约束,缺省值,触发器,视图,存储进程,函数数据表数据。5,查询分析。数据表数据快速查询,编辑及导出操作: SQL智能化输入自动完成;提供专用的SQL编辑器。支持语法高亮,脚本预概念;支持脚本快速选择输入;提供了不同数据库平台下统一的快速查询语法支持(如"DESC");数据表数据和Excel文件之间的双向导入导出操作;提供特定的数据文件格式,用于不同数据库之间的数据导入,导出。6,SQL脚本预输出。数据库模

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧