如何将PB的交叉报表转换成EXCEL形式(包括标题和合计的完整形式)
函数部分:(还用到了PFC的字串处理的一个函数和在本对象中的一个取值函数)
//====================================================================
// [PUBLIC] Function uf_data2excel 在 u_data2word inherited from nonvisualobject
//--------------------------------------------------------------------
// 说明:将数据倒入excel中,支持计算列及显示格式,要求在题头的计算列要写tag值
//--------------------------------------------------------------------
// 参数1:[value] datawindow adw
// 说明:数据窗口
//--------------------------------------------------------------------
// 返回: (INTEGER) 成功返回1,不成功返回0
//--------------------------------------------------------------------
// 作者: cwl 日期: 2002.03.18
//====================================================================
//变更日志:020515加入对交叉表倒出的支持(主要是修改了保存题头部分)
constant integer ppLayoutBlank = 12
OLEObject ole_object
ole_object = CREATE OLEObject
integer li_ret,li_crosstab=0
long ll_colnum,ll_rownum
string ls_value
string ls_objects,ls_obj,ls_objs[],ls_objtag[]
long ll_pos,ll_len,ll_num = 0
//题头区
long ll_headnum
string ls_head[],ls_headtag[]
//合计区
long ll_sumnum,i=1,startpos=1,endpos,li_pos
string ls_sum[],ls_sumtag[],ls_bind,token[],list,ls_temp,ls_crosstabcol
n_cst_string lu_string //PFC string处理对象
li_ret = ole_object.ConnectToObject("","Excel.Application")
IF li_ret <> 0 THEN
//如果Excel还没有打开,则新建。
li_ret = ole_object.ConnectToNewObject("Excel.Application")
if li_ret <> 0 then
MessageBox('OLE错误','OLE无法连接!错误号:' + string(li_ret))
return 0
end if
ole_object.Visible = false//不可见
END IF
if adw.Object.DataWindow.Processing='4' then //交叉表处理
adw.Object.DataWindow.Crosstab.StaticMode='true'

该博客介绍了一个函数uf_data2excel,用于将PowerBuilder(PB)的交叉报表转换为完整形式的EXCEL,包括标题和合计。转换过程中涉及了对数据窗口对象的处理,如提取对象列表、计算列的标签和数据,以及使用OLEObject与Excel应用程序交互。文章还提到了PFC的字符串处理函数of_lastpos和获取数据窗口列显示值的uf_getdata函数。
最低0.47元/天 解锁文章
1461

被折叠的 条评论
为什么被折叠?



