标题:如何按班级、按模板格式批量生成WORD表格
只看楼主
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
结帖率:96.99%
已结贴  问题点数:20 回复次数:12 
如何按班级、按模板格式批量生成WORD表格
现有 成绩汇总表.dbf、模板文件cjtjmb.doc,如何按班级、按模板格式批量生成WORD表格(各班成绩统计表)?请高手帮忙,万分感谢!!!
成绩汇总表.zip (6.64 KB)

成绩汇总表.dbf

模板文件cjtjmb.doc

生成的样表

搜索更多相关主题的帖子: 格式 生成 模板 表格 WORD 
2021-12-30 08:05
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
不管转成什么,还是先加工好dbf,之后就好办了
另外:转成excel不好吗?
2021-12-30 08:37
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
附件中含 成绩汇总表.dbf和模板文件 cjtjmb.doc
2021-12-30 08:54
sostemp
Rank: 4
等 级:业余侠客
威 望:8
帖 子:162
专家分:221
注 册:2009-6-2
得分:0 
判断WORD多少行
根据记录数来进行定位填充,可能分为多种情况。(一页或多页)


2021-12-30 09:13
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 楼主 王咸美
看了一下你发问的贴,如果都看通透应该可成WORD的专家,填写WORD模板应该不成问题。
2021-12-30 10:54
厨师王德榜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:183
帖 子:942
专家分:4724
注 册:2013-2-16
得分:20 
可以做,一个班最多60人吗? 以下代码可以达到要求.
程序代码:
CLEAR 
CLOSE TABLES ALL 
PUBLIC cpath  as String  

LOCAL iArr1 as Integer ,iMax as Integer
cpath = 'c:\XIDE\Projects\'  &&  成绩表和模板文件所在的文件夹。
iMax = 60  &&  模板文件可装入人数的最大值。
USE (cpath + '成绩汇总表.DBF')  IN 0 
SELECT 班级 ,COUNT(*) as 人数 FROM 成绩汇总表 GROUP BY 班级 INTO ARRAY arrbanji
FOR iArr1 = 1 TO ALEN( arrbanji ,1)
    IF arrbanji[iArr1 ,2] > iMax THEN 
        WAIT  arrbanji[iArr1 ,1] + '' +  LTRIM(STR(arrbanji[iArr1 ,2])) + ;
         '人,人数超出模板文件限制,请重新制定模板。程序将跳过制作该班汇总表。' WINDOW AT  10 ,20 TIMEOUT  3
    ELSE 
        WAIT  arrbanji[iArr1 ,1] + '' +  LTRIM(STR(arrbanji[iArr1 ,2])) + ;
         '人,程序开始制作该班汇总表。。。' WINDOW AT  10 ,20 NOWAIT 
        SELECT 姓名,语文,数学,英语 FROM 成绩汇总表 INTO ARRAY arrcj where 班级 = arrbanji[iArr1 ,1]
        = MakeDoc(arrbanji[iArr1 ,1] ,@arrcj)
        RELEASE arrcj        
    ENDIF 
    
NEXT iArr1 

USE IN 成绩汇总表 
WAIT CLEAR 
MESSAGEBOX('制作完成,共输出' +  LTRIM(STR(ALEN( arrbanji ,1)))  + '个文件。',64,'成绩汇总表')
RELEASE arrbanji 


PROCEDURE MakeDoc(bjmc ,arrcj2)
LOCAL oApp as Object ,oDoc as Object ,oTab as Object 
LOCAL cWordFile as String ,cFileOut as String 
LOCAL iside ,iCol , iRow , ii as Integer
STORE 0 TO  iside ,iCol , iRow , ii 
cWordFile = cpath + 'cjtjmb.doc'  &&  模板文件
cFileOut = cpath + bjmc  &&  输出文件
oApp = CREATEOBJECT('Word.Application') 
oDoc = oApp.Documents.Open(cWordFile,0,.t.)
oTab = oDoc.Tables(1) 

For iside = 1 To 2
    For irow = 2 To oTab.Rows.Count
        IF ii < ALEN(arrcj2 ,1 ) THEN 
            For icol = 1 To 4
                oTab.cell(irow, icol + 4 * (iside - 1)).Range.Text = arrcj2(irow + 30 * (iside - 1) - 1, icol)         
            Next icol
            ii = ii + 1
        ELSE 
            EXIT 
        ENDIF 
    Next irow
Next iside


IF FILE(cFileOut) THEN 
    DELETE FILE &cFileOut 
ENDIF 
odoc.SaveAs2(cFileOut)
oDoc.Close()
oApp.Quit() 

ENDPROC 
2021-12-31 11:09
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:0 
回复 6楼 厨师王德榜
好办法!
2022-01-01 07:29
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
Thank you!

[此贴子已经被作者于2022-1-1 15:21编辑过]

2022-01-01 15:07
adonguo163
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2020-9-29
得分:0 
真是高手
2022-01-29 10:44
yuq
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2022-3-7
得分:0 
回复 6楼 厨师王德榜
可以标一下注释吗?让我们新手也学习、瞻仰一下
2022-03-13 10:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508036-1-1.html




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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022136 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved