请教,DW怎么导出Word

NorthStar21 2015-06-03 11:39:42
网上有些材料只支持Grid类型的DW, 有没有像黄国酬前辈的 导出excel那样,强悍点的。

真的好无助呀
...全文
745 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
WorldMobile 2015-06-11
  • 打赏
  • 举报
回复
dw导出word,一般都是导出excel,因为数据窗口都是一行一行的数据,用excel比较好展现,你可以导出excel后,然后复制到word里,可以在程序里直接用代码来实现
xie良 2015-06-11
  • 打赏
  • 举报
回复
  以上为转载资料
xie良 2015-06-11
  • 打赏
  • 举报
回复
怎样将数据窗口(free格式)中的内容转成word文档 答:给你两个函数: (1)、辅助函数 $PBExportHeader$f_cncharnum.srf $PBExportComments$得到字符串中汉字或者双字节的个数 global type f_cncharnum from function_ O B J E C T end type forward prototypes global function integer f_cncharnum (string aString) end prototypes global function integer f_cncharnum (string aString); //函数名: f_cncharnum //用途: 返回一个字符串中汉字的个数 //输入: aString - string, 给定的字符串 //返回值: li_num - Integer, 给定的字符串中汉字的个数 //注意: 1. 此方法基于汉字的国标汉字库区位编码的有效性,不符合此编码的系统此函数无效! // 2. 若汉字串含有非汉字字符,如图形符号或ASCII码,则这些非汉字字符将保持不变. //例如: li_ret = f_cncharnum("摆渡人ferryman") li_ret = 3 string ls_ch //临时单元 string ls_SecondSecTable //存放所有国标二级汉字读音 integer li_num = 0 //返回值 integer i,j For i = 1 to Len(aString) ls_ch = Mid(aString,i,1) If Asc(ls_ch) >= 128 then //是汉字 li_num++ i = i+1 End if Next Return li_num end function --------------------------------------------------------------- (2)、转到WORD $PBExportHeader$f_outputtoword_new.srf global type f_outputtoword_new from function_ O B J E C T end type forward prototypes global function integer f_outputtoword_new (datawindow adw) end prototypes global function integer f_outputtoword_new (datawindow adw); //函数名:f_outputtoword_new //输入: adw - datawindow,指定的数据窗口 //返回值: Integer constant integer ppLayoutBlank = 12 OLEObject ole_ O B J E C T ole_ O B J E C T = CREATE OLEObject integer li_ret li_ret = ole_ O B J E C T.ConnectToObject("","word.application") IF li_ret <> 0 THEN //如果Word还没有打开,则新建。 li_ret = ole_ O B J E C T.ConnectToNewObject("word.application") if li_ret <> 0 then MessageBox('OLE错误','OLE无法连接!错误号:' + string(li_ret)) return 0 end if ole_ O B J E C T.Visible = True END IF long ll_colnum,ll_rownum constant long wdWord9TableBehavior = 1 constant long wdAutoFitFixed = 0 constant long wdCell = 12 string ls_value pointer oldpointer oldpointer = SetPointer(HourGlass!) string ls_ O B J E C Ts,ls_obj,ls_objs[],ls_objtag[] long ll_pos,ll_len,ll_num = 0 ls_ O B J E C Ts = trim(adw.Describe('datawindow.Objects')) do while (pos(ls_ O B J E C Ts,"~t") > 0) ll_pos = pos(ls_ O B J E C Ts,"~t") ll_len = ll_pos - 1 ls_obj = left(ls_ O B J E C Ts,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_ O B J E C Ts = right(ls_ O B J E C Ts,len(ls_ O B J E C Ts) - ll_pos) loop //得到数据窗口数据的列数与行数(行数应该是数据行数 + 1) ll_colnum = ll_num ll_rownum = adw.rowcount() + 1 ole_ O B J E C T.Documents.Add() ole_ O B J E C T.ActiveDocument.Tables.Add(ole_ O B J E C T.Selection.Range, ll_rownum, ll_colnum) string ls_colname integer i,j,k for i = 1 to ll_colnum //得到标题头的名字 ls_value = ls_objtag[i] ole_ O B J E C T.Selection.TypeText(ls_value) for k = 1 to f_cncharnum(ls_value) ole_ O B J E C T.Selection.TypeBackspace() next ole_ O B J E C T.Selection.MoveRight(wdCell) next adw.setredraw(false) ole_ O B J E C T.Selection.MoveLeft(wdCell) 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_ O B J E C T.Selection.MoveRight(wdCell) ole_ O B J E C T.Selection.TypeText(ls_value) //for k = 1 to f_cncharnum(ls_value) //ole_ O B J E C T.Selection.TypeBackspace() //next next next adw.setredraw(true) constant long wdFormatDocument = 0 SetPointer(oldpointer) //保存新建的文档 if messagebox("保存","文档已经成功完成,是否保存?",Question!,YesNo!) = 1 then string docname, named integer value value = GetFileSaveName("选择文件",docname, named, "DOC","Doc Files (*.DOC), *.DOC") IF value = 1 THEN ole_ O B J E C T.ActiveDocument.SaveAs(docname, 0,False,"",True,"",False,False,False, False,False) end if end if //断开OLE连接 Ole_Object.DisConnectObject() Destroy Ole_Object return 1 end function 以上看可否给您帮忙
gzlx 2015-06-03
  • 打赏
  • 举报
回复
可以导出pdf再转成word

610

社区成员

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

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