如何将复合数据窗口中的数据保存成word

wyw2003 2005-11-24 10:28:32
如何将复合数据窗口中的数据保存成word
...全文
204 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sastank 2006-01-18
  • 打赏
  • 举报
回复
学习ing
sbks 2005-12-15
  • 打赏
  • 举报
回复
学习
wyw2003 2005-11-29
  • 打赏
  • 举报
回复
谢谢各位的支持和帮助,我已经解决了,我采用的是ole 在word里加标签的方法,效果还不错。
wyw2003 2005-11-24
  • 打赏
  • 举报
回复
我是用已经存在的word模板,把从复合数据窗口中的数据保存到模板中,怎么做?
hygougou 2005-11-24
  • 打赏
  • 举报
回复
STRING ls_tempname //临时文本文件名
STRING ls_path //存放路径

ls_path = GetCurrentDirectory ( )
ls_tempname = ls_path + '\Temp.txt'


if dw_1.SaveAsASCII(ls_tempname, "~t" ,"") = -1 then
MessageBox("警告", "文件无法保存!", Exclamation!)
return
end if



OLEObject ole_object
ole_object = CREATE OLEObject

integer li_ret

li_ret = ole_object.ConnectToObject("","word.application")

IF li_ret <> 0 THEN
//如果Word还没有打开,则新建
li_ret = ole_object.ConnectToNewObject("word.application")
if li_ret <> 0 then
MessageBox('OLE错误','OLE无法连接!错误号:' + string(li_ret))
return
end if
ole_object.Visible = True
END IF



//打开指定数据源
ole_object.documents.open(ls_tempname)


//保存新建的文档
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_object.ActiveDocument.SaveAs(docname, 0,False,"",True,"",False,False,False, False,False)
//关闭Word
ole_object.ActiveDocument.Close()
ole_object.Application.Quit()
End if
End if


//断开OLE连接
Ole_Object.DisConnectObject()
Destroy Ole_Object
wyw2003 2005-11-24
  • 打赏
  • 举报
回复
??
wyw2003 2005-11-24
  • 打赏
  • 举报
回复
能否说得详细些。谢谢,急
hygougou 2005-11-24
  • 打赏
  • 举报
回复
saveasascii

然后转换成WORD文档
hygougou 2005-11-24
  • 打赏
  • 举报
回复
问题怎么分几步问?
/////////////////////////////////////////////////////////////////////
参考一下吧




dw_1.accepttext()

integer li_fileno, li_tmp
string ls_lable, ls_tmp

li_fileno = fileopen("datasource.txt", LineMode!, Read!, LockReadWrite!)
if li_fileno = -1 then
messagebox("错误","打开datasource.txt失败.")
return
end if

li_tmp = fileread(li_fileno, ls_lable) //将数据源标题保存在变量中。
fileclose(li_fileno)

filedelete("datasource.txt")

li_fileno = fileopen("datasource.txt", LineMode!, Write!, LockReadWrite!, Replace!)
if li_fileno = -1 then
messagebox("错误","打开datasource.txt失败.")
return
end if
//生成数据记录
long ll_count, ll_row
ll_count = dw_1.rowcount()
//将数据源标题写回文件中
filewrite(li_fileno, ls_lable)
for ll_row = 1 to ll_count
ls_tmp = '"' + dw_1.getitemstring(ll_row, "xm") + '","' + dw_1.getitemstring(ll_row,"xb") + '","' + string(dw_1.getitemdate(ll_row,"birthday"),"yyyy年mm月dd日") + '","' + dw_1.getitemstring(ll_row,"dh") + '"'
filewrite(li_fileno, ls_tmp) //将数据记录写回文件中
next
fileclose(li_fileno)

OLEObject ole_object
ole_object = CREATE OLEObject

//连接word
IF ole_object.ConnectToNewObject("Word.Application") <> 0 THEN
MessageBox('OLE错误','OLE无法连接!')
return
END IF

ole_object.Visible = True

constant long wdWord9TableBehavior = 1
constant long wdAutoFitFixed = 0
constant long wdCell = 12

string ls_value
integer i, li_docu
constant long wdNotAMergeDocument = -1
constant long wdDoNotSaveChanges = 0
ole_object.Documents.Add("pbtoword_2.dot",False,0)
//重新指定数据源
ole_object.activedocument.mailmerge.opendatasource("datasource.txt")
//执行邮件合并
ole_object.activedocument.mailmerge.execute()
//统计word打开的文档窗口数
li_docu = integer(ole_object.documents.count)
//关闭邮件合并主文档窗口
for i = 1 to li_docu
if ole_object.activedocument.mailmerge.MainDocumentType <> wdNotAMergeDocument then //如果当前文档是邮件合并文档则关闭
ole_object.activedocument.close(wdDoNotSaveChanges)
end if
if i < li_docu then //如果当前文档不是最后一篇文档则激活下一篇文档
ole_object.activedocument.activewindow.next.activate()
end if
next

constant long wdFormatDocument = 0
//保存新建的文档
ole_object.ActiveDocument.SaveAs("sample.doc", 0,False,"",True,"",False,False,False, False,False)

//断开OLE连接
Ole_Object.DisConnectObject()
Destroy Ole_Object
wyw2003 2005-11-24
  • 打赏
  • 举报
回复
??

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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