怎么通过VFP的表的记录创建word文档

zhoud_j 2015-02-14 10:02:41
请问一下:
我有一些标准格式的文档,想通过保存在数据库中的记录来生成,怎么处理,哪位老师有没有这样的例子,能否指导一下。

主要是有些内容的字数是不能控制的。
...全文
881 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2015-03-07
  • 打赏
  • 举报
回复
我某个程序中的一段代码:
lnReccount=Int(Val(Strtran(Thisform.Label_Recc.Caption,'记录数:','')))
If lnReccount=0
	Return
Endif
Select MyStaffView
lnNowRecno=Recno()
Count For 批量选项=1 To lnPLSum
Go lnNowRecno
If lnPLSum<=1		&& 没有批量选择
	lcDelimFile=Putfile('',Alltrim(MyStaffView.部门)+'-'+Transform(MyStaffView.工号)+'-'+Alltrim(MyStaffView.姓名)+'-劳动合同续签员工确认单','doc')
Else					&&     批量选择
	lcDelimFile=Putfile('','劳动合同续签员工确认单(批量)','doc')
Endif
If Empty(lcDelimFile)
	Return
Endif
Try
	loWordApp=Newobject("Word.Application")  && 产生Word对象
	llSuccess=.T.
Catch To oErr
	Messagebox(oErr.Message,16,'信息提示')
	llSuccess=.F.
Endtry
If llSuccess
	If Not Type("loWordApp")="O"
		Messagebox("创建 Word 对象失败!"+Space(3),48,"信息提示")
		Return
	Endif
Else
	Messagebox("创建 Word 对象失败,确认本机是否已经安装了 Word ?"+Space(3),48,"信息提示")
	Return
Endif
Try
	loWordApp.DisplayAlerts=.F.
	loWordApp.Documents.Add
	loWordApp.Documents(1).Range.Font.Size=14
	loWordApp.Documents(1).Range.Font.Name="仿宋_GB2312"
	If lnPLSum<=1		&& 没有批量选择
		loWordApp.ActiveDocument.Content.insertafter(" 劳动合同续签员工确认单 "+Chr(10)+Chr(10))
		loWordApp.Selection.MoveRight(1,Lenc(" 劳动合同续签员工确认单 "),1)	&& 从第1个字符选择指定长度的字符
		loWordApp.Selection.ParagraphFormat.Alignment=1						&& 把选择的字符设置居中
		loWordApp.Selection.Font.Name="仿宋_GB2312"							&& 设置选择的字符字体名称
		loWordApp.Selection.Font.Size=16									&& 设置选择的字符字体大小
		loWordApp.Selection.Font.Bold=.T.									&& 设置选择的字符粗体
		loWordApp.Selection.Font.Underline=1								&& 设置选择的字符下划线
		loWordApp.Selection.EndKey(6)										&& 移动光标至文档结尾
		Select MyStaffView
		loWordApp.ActiveDocument.Content.insertafter(Alltrim(姓名)+Iif(性别='男','先生,','女士,')+Chr(10))
		loWordApp.Selection.MoveRight(1,Lenc(Alltrim(姓名)),1)				&& 选择姓名
		loWordApp.Selection.Font.Underline=1
		loWordApp.Selection.EndKey(6)										&& 移动光标至文档结尾
		loWordApp.ActiveDocument.Content.insertafter(Space(4)+[您好!公司与您签订的《劳动合同》将于]+Left(合同终止日,4)+[年]+Substr(合同终止日,6,2)+[月]+Right(合同终止日,2)+[日到期,您是否同意续签,请签属此确认单,于     年   月   日前反馈人事行政部,以便办理续签相关事宜。若不同意续签,请本人提出书面“离职申请”,批准后到人事行政部办理相关离职手续。]+Chr(10)+Chr(10))
		loWordApp.ActiveDocument.Content.insertafter([□ 同意续签    □ 不同意续签]+Chr(10)+Chr(10))
		loWordApp.ActiveDocument.Content.insertafter(Space(4)+[员工本人签名:]+Chr(10))
		loWordApp.ActiveDocument.Content.insertafter(Space(35)+[年   月   日])
		loWordApp.Selection.EndKey(6)
	Else				&&     批量选择
		Select MyStaffView
		Set Filter To 批量选项=1
		lnI=0
		Scan
			If lnI>0
				loWordApp.Selection.InsertBreak(7)								&& 分页符
			Endif
			loWordApp.ActiveDocument.Content.insertafter(" 劳动合同续签员工确认单 "+Chr(10)+Chr(10))
			loWordApp.Selection.MoveRight(1,Lenc(" 劳动合同续签员工确认单 "),1)	&& 从第1个字符选择指定长度的字符
			loWordApp.Selection.ParagraphFormat.Alignment=1						&& 把选择的字符设置居中
			loWordApp.Selection.Font.Name="仿宋_GB2312"							&& 设置选择的字符字体名称
			loWordApp.Selection.Font.Size=16									&& 设置选择的字符字体大小
			loWordApp.Selection.Font.Bold=.T.									&& 设置选择的字符粗体
			loWordApp.Selection.Font.Underline=1								&& 设置选择的字符下划线
			loWordApp.Selection.EndKey(6)
			loWordApp.ActiveDocument.Content.insertafter(Alltrim(姓名)+Iif(性别='男','先生,','女士,')+Chr(10))
			loWordApp.Selection.MoveRight(1,Lenc(Alltrim(姓名)),1)
			loWordApp.Selection.Font.Underline=1
			loWordApp.Selection.EndKey(6)
			loWordApp.ActiveDocument.Content.insertafter(Space(4)+[您好!公司与您签订的《劳动合同》将于]+Left(合同终止日,4)+[年]+Substr(合同终止日,6,2)+[月]+Right(合同终止日,2)+[日到期,您是否同意续签,请签属此确认单,于     年   月   日前反馈人事行政部,以便办理续签相关事宜。若不同意续签,请本人提出书面“离职申请”,批准后到人事行政部办理相关离职手续。]+Chr(10)+Chr(10))
			loWordApp.ActiveDocument.Content.insertafter([□ 同意续签    □ 不同意续签]+Chr(10)+Chr(10))
			loWordApp.ActiveDocument.Content.insertafter(Space(4)+[员工本人签名:]+Chr(10))
			loWordApp.ActiveDocument.Content.insertafter(Space(35)+[年   月   日])
			loWordApp.Selection.EndKey(6)
			lnI=lnI+1
		EndScan
		Set Filter To
		Go lnNowRecno
	Endif
	loWordApp.Documents(1).SaveAs(lcDelimFile)
	loWordApp.Visible=.T.
Catch To oErr
	loWordApp.ActiveDocument.Close(.F.)
	loWordApp.Quit
	Release loWordApp
	Messagebox(oErr.Message,16,'信息提示')
Endtry
十豆三 2015-03-07
  • 打赏
  • 举报
回复
Create Cursor T1 (姓名 C(10))
Insert Into T1 (姓名) Values ("王庆")
Insert Into T1 (姓名) Values ("李先生")
Insert Into T1 (姓名) Values ("欧阳震华")
Insert Into T1 (姓名) Values ("成龙")
* 以上生成测试数据

myword=Createobject("Word.application")
If Type("myword")#"O"
	Messagebox( "访问Word失败!请检查你的系统是否正确安装 Word 软件!",48,"没有安装Word")
	Return
Endif

*myword.Visible=.T.
myword.Documents.Add
myword.Documents(1).Range.Font.Size=24
myword.Documents(1).Range.Font.Name="仿宋_GB2312"
myword.Documents(1).Range.Font.Bold=.T.
Select T1
Scan
	lcText=Alltrim(姓名)+Space(1)+"同志系我公司销售科******"+Chr(10)
	myword.ActiveDocument.Content.insertafter(lcText)				&& 在当前位置插入字符串和换行符。
	myword.Selection.MoveRight(1,Lenc(Alltrim(姓名)),1)				&& 选择到姓名
	myword.Selection.Font.Name="华文行楷"							&& 设置选择内容的字体
	*myword.Selection.Font.Size=24									&& 设置选择内容的字号
	myword.Selection.Move(1,Lenc(lcText)-Lenc(Alltrim(姓名))+1)		&& 移到此字符串尾 长度+1是因为换行符 Chr(10)
Endscan

myword.Documents(1).SaveAs("C:\WordTest.doc")
myword.Quit
Release myword
Messagebox( "生成WORD文件完毕,文件位置 C:\WordTest.doc !",64,"完毕")


其他示例:
Word.ActiveDocument.Content.insertafter("面积是10CM2") &&插入文字
Word.Selection.Move(1,8)
Word.Selection.Moveleft(1,1,1)
Word.Selection.Font.Superscript=.T.
Word.Selection.insertafter("。")&&插入文字
Word.Selection.Move(1,1) &&从当前选中字体开始向右移一个,即到了“。”之后
Word.Selection.Moveleft(1,1,1)
Word.Selection.Font.Superscript=.F.
Word.Selection.insertafter("是10CM2") &&插入文字
Word.Selection.Move(1,1) &&从当前选中字体开始向右移一个,即到了字符“2”之后
Word.Selection.Moveleft(1,1,1)
wzxcgd 2015-02-15
  • 打赏
  • 举报
回复
百度 vfp控制word 这方面的资料不少。 也可以本论坛搜索。

2,723

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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