注册 登录
编程论坛 VFP论坛

如何利用WORD模板文件生成并打印干部信息登记表

王咸美 发布于 2021-04-09 10:40, 5408 次点击
如何利用 干部信息登记表.doc模板文件和教师档案信息表文件(jsdaxx.dbf)生成(并打印)干部信息登记表(每人一张,并按人名保存)?
jsdaxx.dbf中字段类型多样,有字符型、日期型、备注型、通用型等。
请各位高手赐教,万分感谢!!!
只有本站会员才能查看附件,请 登录
14 回复
#2
radiofan2021-04-09 10:41
最讨厌用word文档,用vfp自带的报表不好吗?
#3
吹水佬2021-04-09 11:38
如果只是打印,不用生成DOC文件
可以参考DOC模板设计VFP报表文件
#4
wengjl2021-04-09 13:44
直接好VF的报表打印就可以了。
信息表登记表,不采集身份证号,也太落后了。

照片一般单独一个文件夹独立存放比较好
#5
wengjl2021-04-09 13:47
王老师,你以前有打印老师日课表到WORD的嘛,现在是同样的方式操作的啊!只是改几个名称和表格的地址而已
#6
fyyylyl2021-04-09 17:19
可以实现,不过正如上面几位所讲,直接用VFP报表最好,照片也不要放在表中。
cPath="F:\干部信息登记表"
cFileName0=cPath+"\干部信息登记表.doc"
CLOSE DATABASES
USE jsdaxx
SCAN
        cFileName1=cPath+"\"+ALLTRIM(姓名)+" 干部信息登记表.doc"
    IF MESSAGEBOX("确要生成 "+cFileName1+"吗?",4+32+0,"确认:")=6
            cWaitmesg="正在生成《"+cFileName1+"》,请稍候......"
        Wait Window cWaitmesg  Nowait At srow()/2,(scol()-len(cWaitmesg))/2
            oWord =CREATEOBJECT("Word.APPLICATION")
            oDoc =oWord.Documents.Open(cFileName0)
            oTable =oWord.ActiveDocument.Tables(1)
            oWord.VISIBLE =.f.
        WITH oTable

            .Cell(1,2).RANGE.InsertAfter(姓名)
            .Cell(1,4).RANGE.InsertAfter(性别)
            .Cell(1,6).RANGE.InsertAfter(DTOC(出生年月))
                PictureFileName=cPath+"\员工照片.jpg"        &&照片位置及大小最好事先处理
            .cell(1,7).range.InlineShapes.AddPicture(PictureFileName,.F.,.T.)
            .Cell(2,2).RANGE.InsertAfter(民族)
            .Cell(2,4).RANGE.InsertAfter(籍贯)
            .Cell(2,6).RANGE.InsertAfter(出生地)
            .Cell(3,2).RANGE.InsertAfter(IIF(!EMPTY(入党时间),DTOC(入党时间),""))
            .Cell(3,4).RANGE.InsertAfter(IIF(EMPTY(参工时间),DTOC(参工时间),""))
            .Cell(3,6).RANGE.InsertAfter(健康状况)
            .Cell(4,2).RANGE.InsertAfter(职称)
            .Cell(4,4).RANGE.InsertAfter(ALLTRIM(熟悉专业)+" "+ALLTRIM(有何专长))
            .Cell(5,3).RANGE.InsertAfter(全日制教育)
            .Cell(5,5).RANGE.InsertAfter(毕业院校1)
            .Cell(6,5).RANGE.InsertAfter(系及专业1)
            .Cell(7,3).RANGE.InsertAfter(在职教育)
            .Cell(7,5).RANGE.InsertAfter(毕业院校2)
            .Cell(8,5).RANGE.InsertAfter(系及专业2)
            .Cell(9,2).RANGE.InsertAfter(现任职务)
            .Cell(10,2).RANGE.InsertAfter(简历)
        ENDWITH
            oWord.ActiveDocument.SAVEAS(cFileName1)
        IF MessageBox("查看生成的文档吗?",4+32+0,"提示:")=6
            oWord.VISIBLE =.T.
        Else
            oWord.QUIT
            RELEASE oWord
        ENDIF
    ENDIF
ENDSCAN
WAIT CLEAR
#7
sdta2021-04-10 09:56
用EXCEL比用WORD方便
#8
sdta2021-04-10 22:27
...................

[此贴子已经被作者于2021-4-11 13:46编辑过]

#9
王咸美2021-04-11 09:34
@fyyylyl 非常感谢你的帮助!!!但无法对应插入每个人的照片。现将照片附上,请帮忙完善一下代码
照片名称与教师编号相同,如:
  教师 编号0001 照片名称则为0001.jpg
  教师 编号0002 照片名称则为0002.jpg
  教师 编号0003 照片名称则为0003.jpg
  ……
  依此类推
只有本站会员才能查看附件,请 登录



[此贴子已经被作者于2021-4-11 10:44编辑过]

#10
王咸美2021-04-11 09:39
@sdta 你出示的样式,正是我需要的效果,不知能否分享具体代码供学习研究?
只有本站会员才能查看附件,请 登录



[此贴子已经被作者于2021-4-11 10:30编辑过]

#11
星光悠蓝2021-04-11 10:51
6楼的方法已经很详细,原来不知道怎样选择在文档某个表进行填入,恍然大悟,上面的代码只是在单元格内插入新的内容,要覆盖原来内容,用什么代码呢?
#12
sdta2021-04-11 12:06
EXCEL填表要求不明确
1、岁的计算问题: 岁计算的时候截止到什么日期,今天的 岁 与明天的岁可是相差一岁的, 岁的计算公式是什么,只有出生年月(1965.05)能计算出 岁 吗,这种不严谨的登记表填了有什么意义
2、图片的问题:像素大小不一,格式不规范。
3、..........
#13
sdta2021-04-11 12:10
以下是引用王咸美在2021-4-11 09:39:21的发言:

@sdta 你出示的样式,正是我需要的效果,不知能否分享具体代码供学习研究?

https://bbs.bccn.net/viewthread.php?tid=434552&extra=&highlight=EXCEL&page=1
这个思路很适合你,按照这个思路写出代码
#14
ycvf2021-04-15 10:24
用6楼的代码运行后,发现有多少个人就弹出多少个word文档,而且每个人word中的简历都到了第二页,怎么解决?
#15
wengjl2021-04-16 13:29
一个WORD填写完后要保存关闭,这样就不会 有多少个人就弹出多少个word文档
1