注册 登录
编程论坛 VFP论坛

如何将 2021年普通高中省级三好学生名单.docx写入DBF表文件中

王咸美 发布于 2021-06-07 08:20, 2709 次点击
现有 2021年普通高中省级三好学生名单.docx 及表文件 shsmd.dbf
如何将 2021年普通高中省级三好学生名单.docx上内容写入shsmd.dbf中,盼高手赐教,万分感谢!!!
只有本站会员才能查看附件,请 登录

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

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


[此贴子已经被作者于2021-6-7 08:21编辑过]

16 回复
#2
gs25367856782021-06-07 08:36
简单,理顺成VFP表格,然后另存为DBF
#3
gs25367856782021-06-07 08:36
如果你EXCEL版本高,可以用国产货WPS来做这工作
#4
王咸美2021-06-07 08:40
shsmd.dbf格式如下:
只有本站会员才能查看附件,请 登录
#5
gs25367856782021-06-07 08:45
EXCEL中先弄成与它一样的表格,先弄好
#6
sdta2021-06-07 09:52
另存为文本文件,然后参考:https://bbs.bccn.net/thread-501240-1-1.html (这个帖子是楼主发的,刚学过的知识这么快就忘了,这好的学习机会怎么能错过啊)
#7
王咸美2021-06-07 12:54
非常感谢各位的指点!这次发的帖子与上次有所不同:WORD表格每行有两条记录,且各个市三好学生人数不一,恕本人水平有限,不知代码如何书写,诚心求教,盼指点!
#8
sdta2021-06-07 13:01
以下是引用王咸美在2021-6-7 12:54:05的发言:

非常感谢各位的指点!这次发的帖子与上次有所不同:WORD表格每行有两条记录,且各个市三好学生人数不一,恕本人水平有限,不知代码如何书写,诚心求教,盼指点!

水平有限,更应该学习,不是吗?
#9
sdta2021-06-07 13:07
WORD文件另存为文本格式后显示的内容如下:
        2021年普通高中省级三好学生名单
南京市
姓  名
性别
所  在  学  校  和  班  级
姓  名
性别
所  在  学  校  和  班  级
卓羽辰

南京市第一中学高三(4)班
梅志圣

南京市第二十九中学高三(6)班
黄正源

南京市第一中学高三(7)班
林杨

南京市第二十九中学高三(7)班
叶昊

南京市第一中学高三(8)班
潘正华

南京市宁海中学高三(2)班
葛梓涵

南京市第一中学高三(11)班
王慧娟

南京市宁海中学高三(6)班
高锦翔

南京市金陵中学高三(5)班
王辉

南京田家炳高级中学高三(5)班
姚力远

南京市金陵中学高三(7)班
汤子彤

南京大学附属中学高三(1)班
杨宇涵

南京市金陵中学高三(8)班
李乐恒

南京市第十二中学高三(4)班
邾浩宇

南京市金陵中学高三(10)班
马云轩

南京市燕子矶中学高三(1)班
陶宇轩

南京市中华中学高三(1)班

这么简单的问题难不到王老师
#10
王咸美2021-06-07 14:52
@sdta  非常感谢热心指点!我是新手,还真不会,能否提供完整代码?供学习使用。再次表示感谢!!!
#11
吹水佬2021-06-07 15:14
试了一下,另存为文本,这个文件格式还算规范,可以找到数据
只有本站会员才能查看附件,请 登录

程序代码:
cDefPath = ADDBS(JUSTPATH(SYS(16)))
SET DEFAULT TO (cDefPath)
? "运行WORD......"
oWord = CREATEOBJECT("Word.application")
? "打开文件......"
oWord.Documents.Open(cDefPath+"2021年普通高中省级三好学生名单.docx")
? "另存文件......"
oWord.ActiveDocument.SaveAs(cDefPath+"2021年普通高中省级三好学生名单.txt", 2)
oWord.Documents.Close
oWord.Quit
? "读取数据......"
cTXT = FILETOSTR("2021年普通高中省级三好学生名单.txt")
cTXT = RTRIM(cTXT, 0h0D,0h0A)
USE shsmd
ZAP
n = ALINES(arr, cTXT, 5, "市"+0h0D)
m = ALINES(ar, arr[1])
city = ar[m]+"市"
FOR i=2 TO n
    m = ALINES(ar, arr[i], 5, 0h0D,0hA1A1)
    FOR j=7 TO m-2 STEP 3
        INSERT INTO shsmd VALUES (ar[j],ar[j+1],city,ar[j+2])
    ENDFOR
    city = ar[m]+"市"
ENDFOR
SELECT * FROM shsmd
CLOSE DATABASES ALL
CLEAR ALL
RETURN

#12
王咸美2021-06-07 15:51
@吹水佬 非常感谢!!!
#13
王咸美2021-06-08 10:08
@sdta  根据你提供的文本格式,借鉴了吹水佬版主的代码,写了下列代码,出现一点小问题,盼指点!谢谢!!!
CLOSE DATABASES all
cDefPath = ADDBS(JUSTPATH(SYS(16)))
SET DEFAULT TO (cDefPath)
USE shsmd
ZAP
cStr = FILETOSTR("三好学生名单.txt")

n = ALINES(arr, cStr, 5, "市"+0h0D)
*n = ALINES(arr, cStr, 5, "市"+CHR(13)+CHR(10))
m = ALINES(ar, arr[1])
city = ar[m]+"市"
FOR i=2 TO n
    m = ALINES(ar, arr[i], 5, CHR(13),CHR(10))
    FOR j=7 TO m-2 STEP 3
        xm=ALLTRIM(GETWORDNUM(ar[j],1,CHR(13)))
        xb=ALLTRIM(GETWORDNUM(ar[j+1],1,CHR(13)))
        xxhbj=ALLTRIM(GETWORDNUM(ar[j+2],1,CHR(13)))
        INSERT INTO shsmd VALUES (ar[j],ar[j+1],city,ar[j+2])
    ENDFOR
    city = ar[m]+"市"
ENDFOR
SELECT  shsmd
browse
#14
吹水佬2021-06-08 15:43
回复 13楼 王咸美
说有问题,又不见问题,到底出现了一点什么小问题?
#15
王咸美2021-06-08 16:13
@吹水佬 多谢指点!出现问题的原因已找到,原来是三好学生名单.txt中有一个学生的“所在学校和班级”内容分成了两行。

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

#16
吹水佬2021-06-08 16:26
要给个“三好学生名单.txt”文件测试
另:
        xm=ALLTRIM(GETWORDNUM(ar[j],1,CHR(13)))
        xb=ALLTRIM(GETWORDNUM(ar[j+1],1,CHR(13)))
        xxhbj=ALLTRIM(GETWORDNUM(ar[j+2],1,CHR(13)))
这几行好象没什么用
#17
王咸美2021-06-08 17:01
@吹水佬 谢谢指点!
xm=ALLTRIM(GETWORDNUM(ar[j],1,CHR(13)))
        xb=ALLTRIM(GETWORDNUM(ar[j+1],1,CHR(13)))
        xxhbj=ALLTRIM(GETWORDNUM(ar[j+2],1,CHR(13)))

这几行真没用

三好学生名单.txt
只有本站会员才能查看附件,请 登录


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

1