| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 181 人关注过本帖
标题:VFP如何调用word模板文件生成特殊格式的学校日课总表(每天一张)
只看楼主 加入收藏
王咸美
Rank: 1
等 级:新手上路
帖 子:696
专家分:3
注 册:2018-1-4
结帖率:97.63%
收藏
已结贴  问题点数:20 回复次数:3 
VFP如何调用word模板文件生成特殊格式的学校日课总表(每天一张)
现有学校日课总表文件(kb20190101.dbf)、各年级各班级教师任课表(jsrkb20190101.dbf)、模板文件(mtkbmb.doc),如何生成如下图所示的word课表文件?其中每个单元格中的学科设为宋体、粗体、10号字,任课教师姓名设为楷体、9号字,一二年级自习1、自习2设为9号字。请高手赐教,万分感谢!!!

文件.rar (157.72 KB)

生成的学校日课总表样式如下:
图片附件: 游客没有浏览图片的权限,请 登录注册
4 天前 20:13
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:41
帖 子:770
专家分:2537
注 册:2011-5-8
收藏
得分:20 
用VFP合并数据比较简单。用VBA设置格式更方便,可以先按老师设置格式,然后用VBA查找课程名称,按要求设置格式。用VFP设置WORD格式比较麻烦。
不知道为什么要这么精细设置格式?如果是为了打印完全可以用VFP报表可以很方便实行你的要求,想要电子版打印到PDF即可。


dBase有人接盘了。
3 天前 20:05
王咸美
Rank: 1
等 级:新手上路
帖 子:696
专家分:3
注 册:2018-1-4
收藏
得分:0 
谢谢指点
3 天前 21:17
王咸美
Rank: 1
等 级:新手上路
帖 子:696
专家分:3
注 册:2018-1-4
收藏
得分:0 
下列代码可以精简吗?盼高手指点!
CLOSE  DATABASES
CLEAR  ALL
cPath=ADDBS(JUSTPATH(SYS(16)))
SET  DEFAULT  TO  (cPath)
USE  kb20190101  ALIAS  kb  IN  0
USE  jsrkb20190101  ALIAS  jsrkb  IN  0
PUBLIC  cxkmc , i, j , m , n , cjsxm
wjm=cpath+"mtkbmb.doc" &&模板文件

*!* 生成星期一至星期五学校日课总表
FOR  m=1  TO  5
 wordApp=CREATEOBJECT("word.Application")
 wordApp.visible=.t.
 cStr=SUBSTR("一二三四五",1+(m-1)*2,2)
 wordTable=wordApp.Application.Documents.Open(wjm)
 cFileName=cPath+"学校日课总表[星期"+cStr+"]"+".doc"
 wordApp.ActiveDocument.Content.Find.Execute('AB',.F.,.F.,.F.,.F.,.F.,.F.,.F.,.F.,'&cStr',2)
 SELECT   kb
 FOR  i=m*6-3  TO  m*6+2
   FOR  j=4  TO  RECCOUNT()+3
     GO  j - 3             && 对课表进行指针定位(班级定位)
     cxkmc=ALLTRIM(EVALUATE(FIELD(i)))
     SELECT   jsrkb        
     FOR   n=3  TO  FCOUNT("jsrkb")
       GO  j - 3
       IF   FIELD(n)=cxkmc
         cjsxm=ALLTRIM(EVALUATE(FIELD(n)))
         cZdm=cxkmc+"["+cjsxm+"]"
         IF   LEN(cZdm)>12
           wordTable.Tables.item(1).Cell(j,i-6*(m-1)).Range.font.size=9
         ENDIF
         wordTable.Tables.item(1).Cell(j,i-6*(m-1)).Range.Text=cZdm
       ENDIF
     ENDFOR
     SELECT   kb              
   ENDFOR
ENDFOR

*!* 将单元格中学科设置为宋体、粗体、10号字,任课教师姓名设置为楷体、9号字
wordApp.ActiveDocument.Tables(1).Cell(4, 3).Select
wordApp.Selection.MoveRight(3,71,1)
wordApp.Selection.Font.Name = "宋体"
wordApp.Selection.Font.Size = 10
wordApp.Selection.Font.Bold = .t.

do  While  wordApp.Selection.Find.Execute('[')
   wordApp.Selection.MoveRight(3, 1, 1)
   wordApp.Selection.Font.Name = "楷体"
   wordApp.Selection.Font.Size = 9
   wordApp.Selection.Font.Bold = .f.
   wordApp.Selection.MoveRight(3, 1, 0)
enddo

*!* 将一二年级单元格中包含“自习1”和“自习2”的学科设为9号字
wordApp.ActiveDocument.Tables(1).Cell(4, 3).Select
wordApp.Selection.MoveRight(3, 23, 1)
do  While  wordApp.Selection.Find.Execute('自习')
   wordApp.Selection.MoveRight(3, 1, 1)
   wordApp.Selection.Font.Size = 9
   wordApp.Selection.MoveRight(3, 1, 0)
enddo

*!* 保存退出
wordApp.Documents(1).SaveAs(cFileName)
wordApp.Documents.Close  && 关闭工作区  
wordApp.QUIT            
RELEASE  wordApp
ENDFOR
RETURN
前天 14:51
快速回复:VFP如何调用word模板文件生成特殊格式的学校日课总表(每天一张)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028547 second(s), 11 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved