powerbuilder函数实现数据表导出到Excel中
//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