数据窗口转出EXCEL文件,取数据窗口中的字段中文信息。要例子。

yiepeng 2005-03-25 03:40:40
有没有现成的例子,我找了几个,都太复杂,不太好用,大家帮助找一个吧!
...全文
153 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiepeng 2005-03-28
  • 打赏
  • 举报
回复
我做了个自定义函数,可以导出中文,但datails区的合计信息不能导出,请大家帮助看一下。

//可以先将标题改为中文再导出,一个grid的例子
//datawindow->Excel中文标题函数;参数datawindow ad_dw
//自宝义函数uf_dwtoexcel,无返回值。
string str_objects,str_object,str_column,str_add
long lng_pos,i

//str_add=ad_dw.Describe("DataWindow.Objects")+'~t'
str_objects=ad_dw.Describe("DataWindow.Objects")+'~t'
lng_pos=pos(str_objects,"~t")


i=1
do while lng_pos>0
str_object=left(str_objects,lng_pos - 1)//各个对象的名称
str_objects=mid(str_objects,lng_pos + 1)
lng_pos=pos(str_objects,"~t")
//细节区中的列对象及计算域
if ad_dw.describe(str_object+".band")='detail' and (ad_dw.describe(str_object+".type")='column' or ad_dw.describe(str_object+".type")='compute') and ad_dw.describe(str_object+".width")>'0' and ad_dw.describe(str_object+".visible")<>'false' then
str_column=ad_dw.describe(str_object+'_t.text')//列中文标题
ad_dw.Modify(str_object+".dbName='"+str_column+"'")
end if
loop

integer value

value = ad_dw.saveas("",Excel!,TRUE)
IF value = 1 THEN
messagebox('提示!','数据导出成功!')
else
messagebox('提示!','数据导出失败!')
end if
youyouan 2005-03-26
  • 打赏
  • 举报
回复
你可以做成函数的形式,这是我做的一个函数,adw是参数,datawindow类型。返回类型Integer

constant integer ppLayoutBlank = 12
OLEObject ole_object
ole_object = CREATE OLEObject
integer li_ret

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 = True
END IF

pointer oldpointer

oldpointer = SetPointer(HourGlass!)

ole_object.Workbooks.Add

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

ls_objects = trim(adw.Describe('datawindow.Objects'))

do while (pos(ls_objects,"~t") > 0)
ll_pos = pos(ls_objects,"~t")
ll_len = ll_pos - 1
ls_obj = left(ls_objects,ll_len)
if (adw.Describe(ls_obj + '.type') = 'column' or &
adw.Describe(ls_obj + '.type') = 'compute') and &
(adw.Describe(ls_obj + '.band') = 'detail') and (ls_obj <> "asd") then
ll_num += 1
ls_objs[ll_num] = ls_obj
ls_objtag[ll_num] = adw.Describe(ls_obj + '.tag')
end if
ls_objects = right(ls_objects,len(ls_objects) - ll_pos)
loop

//得到数据窗口数据的列数与行数(行数应该是数据行数 + 1)
ll_colnum = ll_num
ll_rownum = adw.rowcount() + 1

string ls_colname
integer i,j,k
for i = 1 to ll_colnum
//得到标题头的名字
ls_value = ls_objtag[i]
ole_object.cells(1,i).value = ls_value
next

string column_name
for i = 2 to ll_rownum
for j = 1 to ll_colnum
column_name = ls_objs[j]
if adw.Describe(column_name + '.type') = 'column' then
ls_value = adw.Describe("Evaluate('LookupDisplay("+column_name+")',"+string(i - 1)+")")
end if
if adw.Describe(column_name + '.type') = 'compute' then
ls_value = adw.Describe("Evaluate('" + adw.Describe(column_name + '.expression') + "',"+string(i - 1)+")")
end if
ole_object.cells(i,j).value = ls_value
next
next

SetPointer(oldpointer)

ole_object.disconnectobject()
DESTROY ole_object
Return 1
config_w 2005-03-25
  • 打赏
  • 举报
回复
我也关注
li_d_s 2005-03-25
  • 打赏
  • 举报
回复
dw2xls,去下一个,不过下载的没有源代码

611

社区成员

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

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