标题:如何判断WORD表格某单元格为空值
只看楼主
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
@吹水佬 感谢耐心指点,好像几条代码不起作用。
2021-12-22 16:57
王咸美
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=2
       DO WHILE k<32
    txt=trim(oTab.Cell(k,(j-1)*6+1).RANGE.TEXT,0h0d,0h07,0h20)

   IF empty(txt) && 对编号进行空值判断
      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
ENDFOR
oWord.QUIT
SELECT * FROM tt

红色标出的几句不起作用,不知为何?

[此贴子已经被作者于2021-12-22 17:16编辑过]

2021-12-22 17:15
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:20 
好象还有乱字符
试试
程序代码:
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
        FOR k=2 TO otab.rows.count
            m = (j-1)*6
            IF empty(trim(oTab.Cell(k,m+1).RANGE.TEXT,0hA1,0h0d,0h07,0h20)) && 对编号进行空值判断
                EXIT
            ENDIF
            INSERT INTO tt VALUES (;
                ALLTRIM(oTab.Cell(k,m+1).RANGE.TEXT,0h0d,0h07,0h20),;
                ALLTRIM(oTab.Cell(k,m+2).RANGE.TEXT,0h0d,0h07,0h20),;
                ALLTRIM(oTab.Cell(k,m+3).RANGE.TEXT,0h0d,0h07,0h20),;
                VAL(oTab.Cell(k,m+4).RANGE.TEXT),;
                VAL(oTab.Cell(k,m+5).RANGE.TEXT),;
                VAL(oTab.Cell(k,m+6).RANGE.TEXT))
        ENDFOR 
    ENDFOR
    oDoc.CLOSE
ENDFOR
oWord.QUIT
SELECT * FROM tt
2021-12-22 19:01
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
@吹水佬 非常感谢!!!如果删除WORD表格中的“编号”,程序运行好像不正常。
成绩统计.rar (17.55 KB)



2021-12-22 20:07
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
6列变5列了,格式变了,肯定不能套用
程序代码:
CREATE  TABLE  tt  (姓名 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
        FOR k=2 TO otab.rows.count
            m = (j-1)*5
            IF empty(trim(oTab.Cell(k,m+1).RANGE.TEXT,0hA1,0h0d,0h07,0h20)) && 对编号进行空值判断
                EXIT
            ENDIF
            INSERT INTO tt VALUES (;
                ALLTRIM(oTab.Cell(k,m+1).RANGE.TEXT,0h0d,0h07,0h20),;
                ALLTRIM(oTab.Cell(k,m+2).RANGE.TEXT,0h0d,0h07,0h20),;
                VAL(oTab.Cell(k,m+3).RANGE.TEXT),;
                VAL(oTab.Cell(k,m+4).RANGE.TEXT),;
                VAL(oTab.Cell(k,m+5).RANGE.TEXT))
       ENDFOR 
    ENDFOR
    oDoc.CLOSE
ENDFOR
oWord.QUIT
SELECT * FROM tt

2021-12-22 20:25
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
@吹水佬 谢谢!非常感谢!!!完美解决问题。
2021-12-22 20:45



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




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

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