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
...全文
1407 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
  • 打赏
  • 举报
回复
我实际是使用的类实现的。

743

社区成员

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

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