标题:如何合并同一文件夹下多个WORD文档内容到DBF表中
只看楼主
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
结帖率:96.99%
已结贴  问题点数:20 回复次数:8 
如何合并同一文件夹下多个WORD文档内容到DBF表中
同一文件夹下有多个WORD文档,且结构相同,字段相同。如何将它们的信息合并到DBF表中,请高手赐教,万分感谢!!!
成绩统计.rar (18.93 KB)



搜索更多相关主题的帖子: 合并 文档 DBF 文件夹 WORD 
2021-12-19 17:05
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:2 
之前是用excel,现在又用word了
取word的表格对象就可以
论坛搜搜看,应该有这方面的参考贴
2021-12-20 01:43
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
主要是学习编程技术,因为在工作中会遇到这种情况,不是找麻烦,多此一举。这次求救的表格有点特殊:一是6个字段内容分12列显示(或18列),二是数据多少不一样,三是显示方式不一样,有的表格12列都有数据,有的只有左边6列有数据,有的只有右边6列有数据。还请高手帮忙,万分感谢!!!
2021-12-20 05:13
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:2 
判断第1列或者第7列,如果是空,就不操作
2021-12-20 08:34
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
下列代码有点问题,请高手指教,万分感谢!!!
SET  talk OFF
SET SAFETY  OFF
CLOSE DATABASES
CLEAR ALL
cDefpath=ADDBS(JUSTPATH(SYS(16)))
SET DEFAULT TO (cDefpath)
CREATE TABLE tt (编号 C(10),姓名 C(10),出生年月 C(10),语文 I,数学 I,英语 I)
oWord=CREATEOBJECT("word.application")
FOR i=1 TO ADIR(c_File,"*.doc")
    oDoc=oWord.Documents.OPEN(cDefpath+"\"+c_File(i,1))
    oTab=oDoc.tables(1)
    FOR j=1 TO 2
        k=3
        DO WHILE k<33
            IF ISNULL(oTab.Cell(k,(j-1)*6+1).RANGE.TEXT)
                EXIT
            ENDIF
            INSERT INTO tt VALUES (;
            ALLTRIM(oTab.Cell(k,(j-1)*6+1).RANGE.TEXT,0h0d,0h07,0h20),;
                ALLTRIM(oTab.Cell(k,(j-1)*6+2).RANGE.TEXT,0h0d,0h07,0h20),;
                ALLTRIM(oTab.Cell(k,(j-1)*6+3).RANGE.TEXT,0h0d,0h07,0h20),;
                VAL(oTab.Cell(k,(j-1)*6+4).RANGE.TEXT),;
                VAL(oTab.Cell(k,(j-1)*6+5).RANGE.TEXT),;
                VAL(oTab.Cell(k,(j-1)*6+6).RANGE.TEXT))
                k=k+1
        enddo
    ENDFOR
    oDoc.CLOSE
    oWord.QUIT   
ENDFOR
SELECT * FROM tt


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

2021-12-20 09:02
厨师王德榜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:183
帖 子:942
专家分:4724
注 册:2013-2-16
得分:16 
这里给你示范取一个Word的表格,取多个的话,你自己用adir()循环一下就好.
程序代码:
LOCAL oDoc as Object , oDocapp As Object ,tab1 as Object
LOCAL  rr As Integer, cc As Integer, ir As Integer, ic As Integer, iarr As Integer
LOCAL tmpStr as String
CLOSE TABLES ALL 
    
create cursor cj (编号 c(10) null ,姓名 c(20) null ,出生年月 c(20) null ,  ;
    语文 n(6,2)  ,数学 n(6,2)  ,英语 n(6,2)   )

oDocapp = CREATEOBJECT("Word.application") 
oDoc = oDocapp.Documents.Open('c:\XIDE\Prg\二(1)班成绩.doc')
tab1 = oDoc.Tables(1)
rr = (tab1.Rows.Count)
cc = (tab1.Columns.Count)
DIMENSION   arr1( rr, cc)

For ir = 1 To rr
    For ic = 1 To cc
        tmpStr = tab1.Cell(ir, ic).Range.Text
        tmpStr = STRTRAN(STRTRAN(tmpStr ,CHR(13) ,CHR(32))  ,CHR(7) ,CHR(32))   
        arr1(ir, ic) = tmpStr
    Next ic

Next ir

oDoc.close()
oDocapp.quit()

create cursor cj0 (编号 c(10) null ,姓名 c(20) null ,出生年月 c(20) null ,  ;
    语文 n(6,2)  ,数学 n(6,2)  ,英语 n(6,2)  ,;
    编号1 c(10) null ,姓名1 c(20) null ,出生年月1 c(20) null ,;
    语文1 n(6,2)  ,数学1 n(6,2)  ,英语1 n(6,2) )
    
SELECT cj0 
APPEND FROM ARRAY arr1
DIMENSION arr1(1,1) 

INSERT INTO cj( 编号  ,姓名   ,出生年月   ,  语文  ,数学   ,英语 ) ;
SELECT 编号  ,姓名   ,出生年月   ,  ;
    语文  ,数学   ,英语 FROM cj0  WHERE (语文 + 数学 + 英语 > 0 ) ;
UNION ALL  ;
SELECT 编号1 as 编号  ,姓名1 as 姓名   ,出生年月1 as 出生年月   ,  ;
    语文1 as 语文  ,数学1 as 数学   ,英语1 as 英语 FROM cj0 WHERE (语文1 + 数学1 + 英语1 > 0 )
    
USE IN cj0
    
2021-12-20 13:31
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
非常感谢!

[此贴子已经被作者于2021-12-20 15:39编辑过]

2021-12-20 15:01
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
@厨师王德榜,如果是多个文件,如何用Adir()循环一遍,还请不吝赐教。谢谢!(因为本人对 vfp一知半解)
2021-12-20 17:01
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
如何判定word表格某个单元格为空值?如五(1)班考试成绩统计表中第7列第2行为空,用代码如何写?请高手指点,万分感谢!!!
2021-12-21 08:19



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




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

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