注册 登录
编程论坛 VFP论坛

如何由表文件shsmd.dbf生成“2021年普通高中省级三好学生名单.doc

王咸美 发布于 2021-06-08 16:41, 2159 次点击
如何由表文件shsmd.dbf生成“2021年普通高中省级三好学生名单.doc”,请高手赐教,万分感谢!!!
只有本站会员才能查看附件,请 登录

表文件shsmd.dbf样式如下:
只有本站会员才能查看附件,请 登录

生成的“2021年普通高中省级三好学生名单.doc”样式如下:
只有本站会员才能查看附件,请 登录

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


[此贴子已经被作者于2021-6-8 17:42编辑过]

5 回复
#2
gs25367856782021-06-09 08:17
实在不知道朋友你想做啥?上回弄的是从WOED到DBF,
今天你又来个从DBF到WORD。
#3
sdta2021-06-09 08:53
以下是引用gs2536785678在2021-6-9 08:17:23的发言:

实在不知道朋友你想做啥?上回弄的是从WOED到DBF,
今天你又来个从DBF到WORD。

要尊重别人的辛勤劳动

[此贴子已经被作者于2021-6-9 10:18编辑过]

#4
王咸美2021-06-09 10:30
主要是从实际出发学习使用方法(如全县六年级抽考成绩分校列表,便于分析),不存在使用廉价劳动力现象。
#5
xuminxz2021-06-09 10:58

程序代码:
Close Tables All
cCurrentProcedure = Sys(16,1)
nPathStart = At(":",cCurrentProcedure)- 1
nLenOfPath = Rat("\", cCurrentProcedure) - (nPathStart)
mypath=Substr(cCurrentProcedure, nPathStart, nLenofPath)
Set Default To (mypath)

_fnm=Sys(5)+Sys(2003)+"\模板.docx"
_Onm=Sys(5)+Sys(2003)+"\2021年普通高中省级三好学生名单.docx"

Declare Long SetForegroundWindow In user32.Dll Long &&设置顶层窗口
Declare Long FindWindow In WIN32API String lpClassName,String lpWindowName  &&第一个参数写 null才行!
oWrd_hWnd=FindWindow(Null,Justfname(_fnm)+' - Word')
If oWrd_hWnd<>0
    SetForegroundWindow(owrd_hwnd)
    wdrs=Getobject(,'word.application')
    wdrs.WindowState=2  && 0 普通 1 最大化  2 最小化
Else
    wdrs=Createobject('word.application')  &&创建Word目标测试是否安装了word  *
    wdrs.documents.Open(_fnm)
Endif
wdrs.Visible=.T.
wdrs.activedocument.SaveAs(_Onm)
*Select Distinct 所在市 dsmc From shsmd Into Cursor dstmp
SELECT 所在市  dsmc From shsmd INTO CURSOR mp1 READWRITE
DELETE ALL
SELECT DISTINCT  所在市  dsmc From shsmd INTO CURSOR mpmp
scan
    _dsmc=ALLTRIM(dsmc)
    SELECT mp1
    LOCATE FOR _dsmc==ALLTRIM(dsmc)
    RECALL  
ENDSCAN
SELECT * FROM mp1 INTO CURSOR sqtemp WHERE !DELETED()
Scan
    _dsmc=Alltrim(dsmc)
    Select 性别 xb,姓名 xm,学校和班级 dw From shsmd Where Alltrim(所在市)==_dsmc Into Cursor mpmp
    _addrows=Ceiling(Reccount('mpmp')/2)
    _rs1=wdrs.activedocument.Tables(1).Rows.Count+2
    wdrs.activedocument.Tables(1).Rows.Last.Select
    wdrs.Selection.InsertRowsBelow(_addrows+2)
    With wdrs.ActiveDocument.Tables(1)
        .Cell(_rs1-1,1).Merge(.Cell(_rs1-1,6))
        .cell(_rs1-1,1).Range.Text=_dsmc
        .cell(_rs1-1,1).range.Font.Size=14
        .cell(_rs1-1,1).range.Font.Bold=.t.
        .cell(_rs1-1,1).range.Font.name='宋体'
        .cell(_rs1-1,1).Borders(-2). LineStyle =0
        .cell(_rs1-1,1).Borders(-4). LineStyle =0        
        .cell(_rs1,1).Range.Text='姓  名'
        .cell(_rs1,2).Range.Text='性别'
        .cell(_rs1,3).Range.Text='所  在  学  校  和  班  级'
        .cell(_rs1,4).Range.Text='姓  名'
        .cell(_rs1,5).Range.Text='性别'
        .cell(_rs1,6).Range.Text='所  在  学  校  和  班  级'
        i=1
        Do While !Eof('mpmp')
            i=i+1
            _xm=Alltrim(mpmp.xm)
            _xb=Alltrim(mpmp.xb)
            _dw=Alltrim(mpmp.dw)
            .cell(_rs1+Int(i/2),4-3*Mod(Recno(),2)).Range.Text=_xm
            .cell(_rs1+Int(i/2),5-3*Mod(Recno(),2)).Range.Text=_xb
            .cell(_rs1+Int(i/2),6-3*Mod(Recno(),2)).Range.Text=_dw
            Skip In mpmp
Endd

Endwith


Endscan
With wdrs.ActiveDocument.Tables(1)
.Rows(1).Delete
.cell(1,1).Borders(-1). LineStyle =0
Endwith
Release wdrs
=MESSAGEBOX('OK')

只有本站会员才能查看附件,请 登录
#6
王咸美2021-06-09 12:50
回复 5楼 xuminxz
非常感谢!!!
1