注册 登录
编程论坛 VFP论坛

VFP调用WORD模板文件生成多页WORD文档

王咸美 发布于 2021-05-20 17:16, 1720 次点击
现有 “股票信息统计表模板.doc”文件和表文件“全部股票.dbf”,我想利用模板文件自动生成多页的“股票信息统计表.doc”,下列程序不知如何修改,请高手赐教,万分感谢!!!
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

程序代码:
SET TALK OFF
SET SAFETY OFF
SET DATE TO YMD
SET MARK TO "-"
SET CENTURY ON
SET COMPATIBLE OFF
wjm="F:\temp2\股票信息统计表.doc"
WordApp=CREATEOBJECT("Word.application")
WordApp.Visible =.t.
WordTable=WordApp.Application.Documents.Open[wjm] && 关键
SET PATH TO F:\temp2
use 全部股票.dbf
FOR i=1 TO FCOUNT()
FOR k=3 TO RECCOUNT()+2  && word模板表头有2行
GO k-2
WordCellText=EVALUATE(FIELD(i))
DO CASE
CASE ISNULL(WordCellText)
WordCellText=""
CASE TYPE("WordCellText")="N"
CASE TYPE("WordCellText")="D"
WordCellText=DTOC(WordCellText)
CASE TYPE("WordCellText")="T"
WordCellText=TTOC(WordCellText)
CASE TYPE("WordCellText")="M"
WordCellText=TRIM(WordCellText)
WordCellText=STRTRAN(WordCellText,CHR(13),' ')
CASE TYPE("WordCellText")="L"
WordCellText=IIF(WordCellText,".T.",".F.")
CASE EMPTY(WordCellText)
WordCellText=" "
OTHERWISE
* WordCellText=""
ENDCASE
IF EMPTY(WordCellText) OR ISNULL(WordCellText)
WordCellText=" "
ENDIF
WordTable.Tables.Item(1).Cell(k,i).Range.Text=WordCellText
WordTable.Tables.Item(1).Cell(k,i).Range.Font.Size=9
ENDFOR
endfor
WordApp.Documents(1).SaveAs("F:\temp2\股票信息统计表.doc") &&自动保存文件
RELEASE WordApp
WAIT CLEAR
MessageBox( "生成Word文件完毕,文件位置 F:\temp2\股票信息统计表.doc!",64,"完毕")
RETURN


4 回复
#2
sdta2021-05-20 17:40
用EXCEL不是更方便吗
#3
王咸美2021-05-20 18:00
wjm="F:\temp2\股票信息统计表.doc"
改为:
wjm="F:\temp2\股票信息统计表模板.doc"
#4
xuminxz2021-05-22 09:26
修改模板文件,只保留一行空行。
在Use 全部股票.Dbf后加上
WordApp.activedocument.Tables(1).cell(3,1).Select  
WordApp.Selection.InsertRowsBelow(RECCOUNT()-1)
WordApp.activedocument.Tables(1).cell(3,1).Select
另外,把循环的最外层改为数据表记录指针可能好好些。赋值直接用字段名,看起来代码长,但执行效率会提高很多。
循环中最好不要有单元格中字体等设置,可以在模板中设置好;即使想用程序设置,也在打开模板后先设置好最后一行就可以了。
指定文档的方式最好不要用序号,特别是执行时间比较长时,这样不能对电脑进行其它操作。


[此贴子已经被作者于2021-5-22 09:37编辑过]

#5
王咸美2021-05-22 09:58
@xuminxz 非常感谢指点!
1