精华内容
下载资源
问答
  • (1)点击【开始】-【编辑】-【替换】按钮或按【Ctrl+H】组合键,打开“查找与替换”对话框,将鼠标光标定位于“查找内容”文本框中,然后点击“更多”按钮。 (2)展开“替换”栏,点击“特殊格式”按钮,在弹出...

    1、批量删除空格

    (1)点击【开始】-【编辑】-【替换】按钮或按【Ctrl+H】组合键,打开“查找与替换”对话框,将鼠标光标定位于“查找内容”文本框中,然后点击“更多”按钮。

    (2)展开“替换”栏,点击“特殊格式”按钮,在弹出菜单中选择“空白区域”选项。

    (3)点击“全部替换”按钮,在“全部完成”的提示框中单击“确定”按钮,所有空格即被删除。

    2、批量删除空行

    Word中,回车符又称为段落标记,一个回车符表示一行结束,所以删除空行就是删除多余的回车符(段落标记),简单来说,就是把多个连续的回车符(段落标记)换成一个回车符,方法如下:

    (1)打开“查找与替换”对话框,将鼠标光标定位于“查找内容”文本框中,然后点击“更多”按钮。

    (2)展开“替换”栏,点击“特殊格式”按钮,在弹出菜单中选择“段落标记”选项。此时,会发现“查找内容”文本框中自动添加了^p。(但这里需要注意,空行是由多个连续的回车符(段落标记)形成)。因此,我们需要在【查找内容】中输入两个^p^p,表示查找两个连续的段落标记;而在【替换为】文本框中输入1个^p,表示将查找到的内容替换为1个段落标记。

    (3)点击“全部替换”按钮,在“全部完成”的提示框中单击“确定”按钮,所有空行即被删除。

    3、指定符号中的任意内容

    \<\!\-\-*\-\-\>
    

    注:要查找已被定义为通配符的字符,该字符前键入反斜杠 \ 。上式中的*表示任意内容

    查找?、*、(、)、[ 、] 等的代码分别是\?、\*、\(、\)、\[、\]
    > 。
    

    4、查找多个制表符

     (^13){2,}
    

    表示2到无穷个

    参考资料:
    https://www.sohu.com/a/164240405_225602

    展开全文
  • 如果你肯多试几个的词的话,你就会发现有些时候选中文本会自动出现在“查找内容”文本框中,而有些时候显示的还是上次选中的文本。这又是为什么呢?原因是只有当Word认为选中的文本是一个“词”时,Ctrl+F

    本文要谈的就是Word,而且是其中一个最最常用的查找功能。这有什么好说的呢,有兴趣的听我细细道来吧。


    大家看了这个标题可能会有一些不解,这不是Word中快捷键Ctrl+F就直接出来的结果吗。如果你肯多试几个的词的话,你就会发现有些时候选中文本会自动出现在“查找内容”文本框中,而有些时候显示的还是上次选中的文本。这又是为什么呢?原因是只有当Word认为选中的文本是一个“词”时,Ctrl+F后选中文本才会自动出现在“查找内容”中


    不过很多情况下,我们就是希望选中的内容为关键字进行查找,而不希望Word那个词认定的标准干扰我们。

    【改善前查找标准操作】

    选中文本-->拷贝-->Ctrl+F-->粘贴-->回车(查找),足足有5步。

    当然,如果我们确信选中的文本是Word所认定的词的话,那么上面的拷贝与粘贴两步可省略,变为3步。不过这样做会有一个风险,即这个词其实并没有为Word所认定为词,这时就得不偿失了,得Esc(关闭查找对话框)--》拷贝。。。结果变为最差的8步!!


    【改善后】

    选中文本-->Ctrl+Shift+PageDown(下面宏定义的快捷键,可自定义),只需要2步!


    【宏定义】**如何为宏定义指定快捷键,本文不再赘述。

    Sub Search_Text()
      Dim myText As String   ' 選択されている文字列
      If Selection.Start = Selection.End Then
        myText = ""
      Else
        myText = Selection.Text
      End If
      'あいまい検索を実施
      Selection.Find.ClearFormatting
      Selection.Find.Replacement.ClearFormatting
      With Selection.Find
        .Text = myText
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = False
        .MatchFuzzy = True
      End With
      Selection.Find.Execute
    End Sub


    【参考】**可惜的是下面这个新田順也的Blog无法正常访问。据他自己的介绍,今年10月他刚当选为Office部门的MVP。

    ameblo.jp/gidgeerock/entry-10909589407.html



    展开全文
  • 论文查重:利用Python查找两个Word文件的相同内容

    千次阅读 多人点赞 2020-01-02 09:03:51
    本文中为了便于定位,先根据原始段落进行拆分,然后再将每段根据标点拆分成若干小句,即一个word文档 = [[段落1], [段落2], [段落3], ...,[段落n]],而每个段落= [[小句1],[小句2],[小句3],...,[小句m],]。...

    前言

    我们在写论文的时候,为了避免论文重复,可以使用第三方的库进行查重。但是,有时候在写论文的时候,只是引用自己之前的资料,在查重前想对自己的论文两篇文章进行查重。网上找了一下,没找到合适的工具,于是就自己用Python写了一个。

    基本思路

    两篇论文查重的方法相对比较简单,即将文章拆分成小句,然后小句间进行两两对比。主要实现基本可以分为以下三步:

    1. 读取
      使用Python的python-docx库,可以非常方便的读取Word的内容,具体可以参见官方文档,网上也有很多不错的文章请自行查询参考。
    2. 原文拆分
      对比的基本思想是按小句进行比较,所以拆分以是标点,即,。?!等进行拆分。拆分完成以后,可以有很多的小段。本文中为了便于定位,先根据原始段落进行拆分,然后再将每段根据标点拆分成若干小句,即一个word文档 = [[段落1], [段落2], [段落3], ...,[段落n]],而每个段落= [[小句1],[小句2],[小句3],...,[小句m],]
    3. 循环对比输出
      第三步就是根据段落,两两进行对比,遇到匹配输出结果。

    在对比中,有几点要注意:

    1. 如果子句过短(长度<5)则忽略,因为这种情况都是名词或术语,允许重复。
    2. 两个子句比较时,并不是用等号,而用包括,即一个子句是否包含另一个子句。

    实现代码

    # coding=utf-8
    
    from docx import Document
    import re, sys, datetime
    
    
    def getText(wordname):
        d = Document(wordname)
        texts = []
        for para in d.paragraphs:
            texts.append(para.text)
        return texts
    
    def is_Chinese(word):
        for ch in word:
            if '\u4e00' <= ch <= '\u9fff':
                return True
        return False
    
    def msplit(s, seperators = ',|\.|\?|,|。|?|!'):
        return re.split(seperators, s)
    
    def readDocx(docfile):
        print('*' * 80)
        print('文件', docfile, '加载中……')
        t1 = datetime.datetime.now()
        paras = getText(docfile)
        segs = []
        for p in paras:
            temp = []
            for s in msplit(p):
                if len(s) > 2:
                    temp.append(s.replace(' ', ""))
            if len(temp) > 0:
                segs.append(temp)
        t2 = datetime.datetime.now()
        print('加载完成,用时: ', t2 - t1)
        showInfo(segs, docfile)
        return segs
        
    def showInfo(doc, filename = 'filename'):
        chars = 0
        segs = 0
        for p in doc:
            for s in p:
                segs = segs + 1
                chars = chars + len(s)
        print('段落数: {0:>8d} 个。'.format(len(doc)))
        print('短句数: {0:>8d} 句。'.format(segs))
        print('字符数: {0:>8d} 个。'.format(chars))
              
    def compareParagraph(doc1, i, doc2, j, min_segment = 5): 
        """
        功能为比较两个段落的相似度,返回结果为两个段落中相同字符的长度与较短段落长度的比值。
        :param p1: 行
        :param p2: 列
        :param min_segment = 5: 最小段的长度
        """
        p1 = doc1[i]
        p2 = doc2[j]
        len1 = sum([len(s) for s in p1])
        len2 = sum([len(s) for s in p2])
        if len1 < 10 or len2 < 10:
            return []
        
        list = []
        for s1 in p1:
            if len(s1) < min_segment:
                continue;
            for s2 in p2:
                if len(s2) < min_segment:
                    continue;
                if s2 in s1:
                    list.append(s2)
                elif s1 in s2:
                    list.append(s1)
                    
        # 取两个字符串的最短的一个进行比值计算
        count = sum([len(s) for s in list])
        ratio = float(count) /  min(len1, len2)
        if count > 10 and ratio > 0.1:
            print(' 发现相同内容 '.center(80, '*'))
            print('文件1第{0:0>4d}段内容:{1}'.format(i + 1, p1))
            print('文件2第{0:0>4d}段内容:{1}'.format(j + 1, p2))
            print('相同内容:', list)
            print('相同字符比:{1:.2f}%\n相同字符数: {0}\n'.format(count, ratio * 100))
        return list
     
    if len(sys.argv) < 3:
        print("参数小于2.")
    
    
    doc1 = readDocx(sys.argv[1])
    doc2 = readDocx(sys.argv[2])
    
    print('开始比对...'.center(80, '*'))
    t1 = datetime.datetime.now()
    for i in range(len(doc1)):
        if i % 100 == 0:
            print('处理进行中,已处理段落 {0:>4d} (总数 {1:0>4d} ) '.format(i, len(doc1)))
        for j in range(len(doc2)):
            compareParagraph(doc1, i, doc2, j)
     
    t2 = datetime.datetime.now() 
    print('\n比对完成,总用时: ', t2 - t1)    
    

    测试结果

    测试文章两篇,均为来自于百度文库):《新交通法规2016全文》《新交通法规牌照细则》

    运行命令

    > python wordProcess.py d:\jg2016.docx d:\jg2017.docx
    

    对比结果如下。

    ********************************************************************************
    文件 d:\jg2016.docx 加载中……
    加载完成,用时:  0:00:00.012992
    段落数:      312 个。
    短句数:      846 句。
    字符数:    15703 个。
    ********************************************************************************
    文件 d:\jg2017.docx 加载中……
    加载完成,用时:  0:00:00.004016
    段落数:      145 个。
    短句数:      379 句。
    字符数:     6509 个。
    ************************************开始比对...*************************************
    处理进行中,已处理段落    0 (总数 0312 )
    处理进行中,已处理段落  100 (总数 0312 )
    ************************************ 发现相同内容 ************************************
    文件1第0137段内容:['\u3000\u3000机动车运载超限的不可解体的物品', '影响交通安全的', '应当按照公安机关交通管理部门指定的 时间、路线、速度行驶', '悬挂明显标志', '在公路上运载超限的不可解体的物品', '并应当依照公路法的规定执行']
    文件2第0090段内容:['高速公路是绝对的危险路段', '由于高速公路是全封闭的设计', '所以您在高速路上只能是向前跑', '出现停车 、倒车甚至是逆行和借助中央隔离带的缺口掉头等行为', '都是严重影响交通安全的', '以上行为都会受到12分的处罚', '以上均为严重影响交通安全的恶劣行为', '除了原来的6项之外有增加了5项', '部分为6分的处罚规定升级的12分', '针对我国的情况来看', '有助于 更好地把控违章行为', '安全意识不够高也只能用提高处罚的力度来维护交通环境了', '而对于牡丹卡中的分值来说', '一次性扣除12分是最严厉的处罚了']
    相同内容: ['影响交通安全的', '影响交通安全的']
    相同字符比:16.28%
    相同字符数: 14
    
    ************************************ 发现相同内容 ************************************
    文件1第0138段内容:['\u3000\u3000机动车载运爆炸物品、易燃易爆化学物品以及剧毒、放射性等危险物品', '应当经公安机关批准后', '按指定的时间、路线、速度行驶', '悬挂警示标志并采取必要的安全措施']
    文件2第0116段内容:['驾驶机动车运载超限的不可解体的物品', '未按指定的时间、路线、速度行驶或者未悬挂明显标志者', '将受到 扣除6分的处罚']
    相同内容: ['按指定的时间、路线、速度行驶']
    相同字符比:26.92%
    相同字符数: 14
    
    ************************************ 发现相同内容 ************************************
    文件1第0138段内容:['\u3000\u3000机动车载运爆炸物品、易燃易爆化学物品以及剧毒、放射性等危险物品', '应当经公安机关批准后', '按指定的时间、路线、速度行驶', '悬挂警示标志并采取必要的安全措施']
    文件2第0118段内容:['驾驶机动车载运爆炸物品、易燃易爆化学物品以及剧毒、放射性等危险物品', '未按指定的时间、路线、速度行 驶或者未悬挂警示标志并采取必要的安全措施者将受到此处罚']
    相同内容: ['按指定的时间、路线、速度行驶', '悬挂警示标志并采取必要的安全措施']
    相同字符比:41.10%
    相同字符数: 30
    
    处理进行中,已处理段落  200 (总数 0312 )
    ************************************ 发现相同内容 ************************************
    文件1第0212段内容:['\u3000\u3000醉酒驾驶机动车的', '由公安机关交通管理部门约束至酒醒', '吊销机动车驾驶证', '依法追究刑 事责任;五年内不得重新取得机动车驾驶证']
    文件2第0023段内容:['依法追究刑事责任', '一律吊销机动车驾驶证']
    相同内容: ['吊销机动车驾驶证', '依法追究刑事责任']
    相同字符比:88.89%
    相同字符数: 16
    
    ************************************ 发现相同内容 ************************************
    文件1第0214段内容:['\u3000\u3000醉酒驾驶营运机动车的', '由公安机关交通管理部门约束至酒醒', '吊销机动车驾驶证', '依法追 究刑事责任;十年内不得重新取得机动车驾驶证', '重新取得机动车驾驶证后', '不得驾驶营运机动车']
    文件2第0023段内容:['依法追究刑事责任', '一律吊销机动车驾驶证']
    相同内容: ['吊销机动车驾驶证', '依法追究刑事责任']
    相同字符比:88.89%
    相同字符数: 16
    
    ************************************ 发现相同内容 ************************************
    文件1第0215段内容:['\u3000\u3000饮酒后或者醉酒驾驶机动车发生重大交通事故', '构成犯罪的', '依法追究刑事责任', '并由公安 机关交通管理部门吊销机动车驾驶证', '终生不得重新取得机动车驾驶证']
    文件2第0025段内容:['一律吊销机动车驾驶证', '终生不得重新取得机动车驾驶证']
    相同内容: ['终生不得重新取得机动车驾驶证']
    相同字符比:58.33%
    相同字符数: 14
    
    ************************************ 发现相同内容 ************************************
    文件1第0216段内容:['\u3000\u3000第九十二条\u3000公路客运车辆载客超过额定乘员的', '处二百元以上五百元以下罚款;超过额定 乘员百分之二十或者违反规定载货的', '处五百元以上二千元以下罚款']
    文件2第0035段内容:['机动车驾驶人补领机动车驾驶证后', '继续使用原机动车驾驶证的', '处二十元以上二百元以下罚款;在实习期内驾驶机动车不符合第六十五条规定的', '处二十元以上二百元以下罚款;驾驶机动车未按规定粘贴、悬挂实习标志或者残疾人机动车专用 标志的', '处二十元以上二百元以下罚款;持有大型客车、牵引车、城市公交车、中型客车、大型货车驾驶证的驾驶人', '未按照规定申 报变更信息的', '处二十元以上二百元以下罚款;机动车驾驶证被依法扣押、扣留或者暂扣期间', '采用隐瞒、欺骗手段补领机动车驾驶 证的', '处二百元以上五百元以下罚款;机动车驾驶人身体条件发生变化不适合驾驶机动车', '仍驾驶机动车的', '处二百元以上五百元 以下罚款;逾期不参加审验仍驾驶机动车的', '处二百元以上五百元以下罚款']
    相同内容: ['处二百元以上五百元以下罚款']
    相同字符比:18.57%
    相同字符数: 13
    
    ************************************ 发现相同内容 ************************************
    文件1第0217段内容:['\u3000\u3000货运机动车超过核定载质量的', '处二百元以上五百元以下罚款;超过核定载质量百分之三十或者 违反规定载客的', '处五百元以上二千元以下罚款']
    文件2第0035段内容:['机动车驾驶人补领机动车驾驶证后', '继续使用原机动车驾驶证的', '处二十元以上二百元以下罚款;在实习期内驾驶机动车不符合第六十五条规定的', '处二十元以上二百元以下罚款;驾驶机动车未按规定粘贴、悬挂实习标志或者残疾人机动车专用 标志的', '处二十元以上二百元以下罚款;持有大型客车、牵引车、城市公交车、中型客车、大型货车驾驶证的驾驶人', '未按照规定申 报变更信息的', '处二十元以上二百元以下罚款;机动车驾驶证被依法扣押、扣留或者暂扣期间', '采用隐瞒、欺骗手段补领机动车驾驶 证的', '处二百元以上五百元以下罚款;机动车驾驶人身体条件发生变化不适合驾驶机动车', '仍驾驶机动车的', '处二百元以上五百元 以下罚款;逾期不参加审验仍驾驶机动车的', '处二百元以上五百元以下罚款']
    相同内容: ['处二百元以上五百元以下罚款']
    相同字符比:20.63%
    相同字符数: 13
    
    ************************************ 发现相同内容 ************************************
    文件1第0221段内容:['\u3000\u3000机动车驾驶人不在现场或者虽在现场但拒绝立即驶离', '妨碍其他车辆、行人通行的', '处二十元 以上二百元以下罚款', '并可以将该机动车拖移至不妨碍交通的地点或者公安机关交通管理部门指定的地点停放', '公安机关交通管理部门拖车不得向当事人收取费用', '并应当及时告知当事人停放地点']
    文件2第0035段内容:['机动车驾驶人补领机动车驾驶证后', '继续使用原机动车驾驶证的', '处二十元以上二百元以下罚款;在实习期内驾驶机动车不符合第六十五条规定的', '处二十元以上二百元以下罚款;驾驶机动车未按规定粘贴、悬挂实习标志或者残疾人机动车专用 标志的', '处二十元以上二百元以下罚款;持有大型客车、牵引车、城市公交车、中型客车、大型货车驾驶证的驾驶人', '未按照规定申 报变更信息的', '处二十元以上二百元以下罚款;机动车驾驶证被依法扣押、扣留或者暂扣期间', '采用隐瞒、欺骗手段补领机动车驾驶 证的', '处二百元以上五百元以下罚款;机动车驾驶人身体条件发生变化不适合驾驶机动车', '仍驾驶机动车的', '处二百元以上五百元 以下罚款;逾期不参加审验仍驾驶机动车的', '处二百元以上五百元以下罚款']
    相同内容: ['处二十元以上二百元以下罚款', '处二十元以上二百元以下罚款', '处二十元以上二百元以下罚款', '处二十元以上二百 元以下罚款']
    相同字符比:41.94%
    相同字符数: 52
    
    ************************************ 发现相同内容 ************************************
    文件1第0245段内容:['\u3000\u3000对驾驶前款所列机动车上道路行驶的驾驶人', '处二百元以上二千元以下罚款', '并吊销机动车驾 驶证']
    文件2第0018段内容:['对上道路行驶的拼装、改装或者应该报废的机动车一律予以收缴', '强制报废', '对驾驶前款所列机动车上道路 行驶的驾驶人', '一律处1500元罚款', '并吊销机动车驾驶证']
    相同内容: ['对驾驶前款所列机动车上道路行驶的驾驶人', '并吊销机动车驾驶证']
    相同字符比:65.12%
    相同字符数: 28
    
    ************************************ 发现相同内容 ************************************
    文件1第0248段内容:['\u3000\u3000造成交通事故后逃逸的', '由公安机关交通管理部门吊销机动车驾驶证', '且终生不得重新取得机 动车驾驶证']
    文件2第0025段内容:['一律吊销机动车驾驶证', '终生不得重新取得机动车驾驶证']
    相同内容: ['终生不得重新取得机动车驾驶证']
    相同字符比:58.33%
    相同字符数: 14
    
    处理进行中,已处理段落  300 (总数 0312 )
    
    比对完成,总用时:  0:00:00.118681
    

    小结

    经测试,本方法可以有效地识别出相同的内容, 加满解决了之前的需求,达到了预期的目标。

    展开全文
  • Word模板的制作方法和内容定位识别技术 摘要 本文提出了Word模板的4种制作方法,并对每种方法的具体制作和使用进行了详细论述,最后比较了4种方法的优缺点和适用场合,并提出了Word模板格式的保护方法。...

    Word模板的制作方法和内容定位识别技术

     

    摘要  本文提出了Word模板的4种制作方法,并对每种方法的具体制作和使用进行了详细论述,最后比较了4种方法的优缺点和适用场合,并提出了Word模板格式的保护方法。
    关键词  Word、模板、定位
     
    Word不但具有无与伦比的图文处理能力,同时也提供了Word层次结构的对象,使用户可以用VBA或者第三方软件开发工具实现文档自动化。COM技术的发展,使得客户程序可以更方面容易的控制服务器程序。硬件速度的大幅提高,使原来制约COM执行速度慢的瓶颈也已不复存在。因此,越来越多的软件系统开始采用Word作为报表输出工具,有的甚至将Word作为数据录入工具。
    但是,无论将Word作为报表输出或者录入工具,都涉及到Word中字符定位的问题。一般都是采用制作Word模板的方法来解决字符的定位。本文中所指的模板是一个体现用Word文档,和Word中定义的.dot后缀形式的模板是有区别的。模板的制作共有特殊字符标记法、书签定义法、表格法和域定义4种方法,下面分别论述其制作方法和内容识别技术、对其优缺点进行比较并对共性的问题提供解决办法。以下程序示例都以Delphi语言为主,但对其他语言也同样适用。
     
    特殊字符标记法
    该方法是在模板中用不常见的特殊字符来表示需要替换的部分,例如符号<#Variable>,<# >是特殊字符,Variable是变量名字,用来区分不同的替换内容。利用该方法制作好的Word模板,只能用来进行写操作,即将特殊字符和变量替换成具体的内容。具体的替换示例如下:
        FindText := '<#cgmc>'; //欲查询字符
        MatchCase := False;
        MatchWholeWord := True;
        MatchWildcards := False;
        MatchSoundsLike := False;
        MatchAllWordForms := False;
        Forward := True;
        Wrap := wdFindContinue; //是否查询下一个
        Format := False;
     
        Replace := True;
        MatchKashida:= false ;
        MatchDiacritics:= false ;
        MatchAlefHamza:= false ;
        MatchControl:= false ;
    ReplaceWith := '特殊字符标记法' ; //替换字符
    with WordDocument1.Range.Find do
    begin
       execute(FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward, Wrap, Format, Replace, MatchKashida, MatchDiacritics, MatchAlefHamza, MatchControl, ReplaceWith);
    end;
    示例中定义的各变量都是OleVariant类型的变量。以上只是针对一个特殊字符标记进行处理的例子。读者可将本例予查询字符中的“cgmc”换成变量,进行循环查询替换,也可以根据特殊字符<#>进行遍历查询替换,且替换内容不仅可以是字符,也可以是图形,甚至可以是图文混排的内容。这可以通过剪贴板实现。
     
    书签定义法
    书签原本是作为浏览Word文档时,快速返回原先查看处的一种方法。本文正是利用书签的定位原理,对模板中的特定区域进行识别。利用该方法制作模板的步骤如下:
    (1)打开已定义的模板文档,选中需要定义书签的区域。
    (2)在插入主菜单中选择书签。
    (3)输入书签名选择添加。
    一个文档中可定义多个不同的书签。书签定义完成后,在文档正文中不显示,但可以利用Word的书签菜单手动查找或利用代码查找。Word书签的定位及其读写操作示例如下:
    tmp1 := wdGoToBookmark;
    tmp2 := 'cgmc';
    WordApp.Selection.GoTo_(tmp1,EmptyParam,EmptyParam,tmp2); //书签定位
    Memo1.Lines.Add(WordApp.Selection.Text);//读操作
     
    tmp1 := wdGoToBookmark;
    tmp2 := 'cgmc';
    WordApp.Selection.GoTo_(tmp1,EmptyParam,EmptyParam,tmp2); //书签定位
    WordApp.Selection.TypeText('书签示例);//写操作
     
    示例中tmp1,tmp2都是OleVariant类型的变量,当然也可以利用BookMarks集合的Count属性对书签进行遍历。利用书签在文档中输出文本时,书签位置上的原有内容会被新内容替换。
     
    表格法
    利用该方法制作的整个模板本身是由一个或多个表格构成,具体读写内容以单元格索引为依据进行读取。插入表格的具体步骤如下:
    (1)在表格主菜单中选择插入/表格。
    (2)输入列数和行数,点击确定。
    (3)根据模板样式合并或拆分单元格。
    模板制作完成后,可根据需要将表格线进行隐藏。单元格内容的具体读写示例如下:
     For i := 1 To WordDoc.Tables.Count do            //第 i 个表
     begin                                           
         for j := 1 To WordDoc.Tables.Item(i).Range.Cells.Count do  //第 j 个Cell
          begin
             myCell := WordDoc.Tables.Item(i).Range.Cells.Item(j);
              memo1.Lines.add(myCell.Range.Text); //读操作
           end;
      end;
     
     For i := 1 To WordDoc.Tables.Count do            //第 i 个表
     begin                                           
         for j := 1 To WordDoc.Tables.Item(i).Range.Cells.Count do  //第 j 个Cell
          begin
             myCell := WordDoc.Tables.Item(i).Range.Cells.Item(j);
              myCell.Range.Text := '表格示例’; //读操作
           end;
      end;
    示例中myCell是Word2000的Cell类型变量。利用表格法制作模板时,可根据需要设置一个或多个表格。无论规则的二维Word表格还是不规则的表格,单元格索引号都遵循从左至右从上到下逐渐增加的顺序,且每个表格的第一个单元格的索引号为1。
     
    4 域定义法
    该方法是利用Word中的域的定义来实现字符定位和内容识别。首先定义模板的大体框架,然后在需要定义域的地方插入域。插入域的具体步骤如下:
    (1)在插入主菜单中选择域。
    (2)选择 “文档自动化”类别。
    (3)从域名中选择“DocVariable”。
    (4)利用DocVariabel的命名语法定义文档中的域变量。
    按Alt+F9可以显示或隐藏域定义代码。一个Word模板中可以定义多个域,多个域之间用变量名来区别。本例中的域定义在Word模板的主体部分(即除了页眉和页脚)。其读写示例分别如下:
    For i := 1 to WordDoc.Fields.Count do
    begin
    If WordDoc.Fields.Item(i).type_ = wdFieldDocVariable then
          WordDoc.Fields.Item(i).Result.Text := 'Word文档中域的使用';  //给域付值
    end;
     
    For i := 1 to WordDoc.Fields.Count do
    begin
    If WordDoc.Fields.Item(i).type_ = wdFieldDocVariable then
    Memo1.Lines.Add(WordDoc.Fields.Item(i).Result.Text) : //读取所有DocVariable类型的域值
    end;
    Word文档中域的具体类型共有87种,详细定义可在Delphi中的Word_Tlb.Pas中查阅。在使用域变量时,必须对域类型进行判断。以上所举的例子中都是通过域的遍历来实现指定位置文字的输出和读取,当然也可以通过域变量的名字进行域的识别。具体方法是利用域的Code属性,提取域定义字符串,然后在域定义字符串中查找域变量。需要注意的是:给域赋值时,域中原有的文字不会被新值替换,只是在域中原有的文字后继续添加。
    以上4种方法,除特殊字符标记法只能用做Word文档生成之外,其余三种方法既能用作Word文档生成,也能用作利用模板制作的Word文档内容的读取。但是对于利用Word文档作为系统手动录入界面来讲,书签法很容易被用户误删除,域定义法更是很难被用户肉眼识别,且即使识别出来,手动录入也很麻烦。在实际应用中,表格法制作的模板文件一般来讲格式相对稳定,用户除非有意,否则很难误删除。因此表格法制作的模板同其他三种方法相比,更能胜任制作录入界面的工作。
    模板文件归根结底是一种具有特殊格式的Word文档,因此很容易被人们修改格式。为了避免模板格式被破坏。可以为Word模板设置密码,具体使用时,手动或用程序输入密码,用程序输入密码的方法为WordDoc.UnProtect,然后打开模板文件进行操作。
    展开全文
  • Word查找的通配符和特殊字符!

    万次阅读 2012-04-05 12:52:58
    ^&代表查找内容(在替换时使用)。 其他段落标记、人工换行符、制表符等等应该称为特殊字符。 所谓通配就是随意的,如我知道一个单词的第一个字母是B,第三个C,但第二个不知道了,那就搜索B?C 任意单个字符 ...
  • word中快速查找所有图片

    千次阅读 2019-09-27 16:06:30
    #选择导航窗格→点击搜索框里的小三角→选择查找图形
  • Sub GetRowIdByFind() Dim myRange As Range Dim sSelection As Selection ActiveDocument.Select Set myRange = ActiveDocument.Content myRange.Find.Execute FindText:="2ºÅÂ¥25Â¥", Forward:=True ...
  • 前段时间写项目文档,...1、节点递归查找 2、颜色标注匹配节点 3、若匹配节点其父节点尚未展开,则需颜色标注该父节点,表示其子项存在匹配项 4、展开节点时,若节点并非是匹配节点,则取消颜色标注 5、收回节...
  • 1,打开一个doc文档; 2,代码编写: 变量定义 .版本 2 .局部变量 wdapp, 对象 ... .... .... .... ....' doc文档中精确定位表格单元格中并写入文本 wdapp.获取(“word.application”) ' 加载已经打开的d...
  • 有同学反映,需要查找指定字符的前一个字符。根据此需求,大家可用录制宏操作一下查找某字符的操作,然后得到一些基本代码,在此基础上进行修改,得到具备相应功能的过程代码。最终代码如下: Sub findtext() Dim ...
  • word VBA在特定选中区域查找特定字符

    千次阅读 2020-03-24 15:30:27
    补充参考该文 在WORD中用VBA实现光标移动与内容选择 Private Function stringTatalNum(str As String) As Integer '全文查找字符出现个数,并返回总数 Dim n n = 0 ActiveDocument.Range.Select Selection.Find....
  • office-word使用技巧——查找&替换

    千次阅读 2017-10-01 20:25:23
    查找和替换在我们处理大量文本时是一个非常好的工具,本文也提供了几种常见用法,值得借鉴。
  • 查找word文档中所有红色字体的位置。 二、实现 “查找”—>“更多”(展开更多,按钮文字切换为更少)——>“格式”——>“字体”——>“字体颜色”设置为红色——>确定,如下图: 三、...
  • 1,打开一个doc文档; 2,代码编写: 变量定义 .版本 2 .局部变量 wdapp, 对象 .局部变量 What, 变体型 .... .... .... ....' doc文档中按行定位并写入文本 wdapp.获取(“word.application”) '...
  • 首先在Word文档中,插入一个新的书签,并命名(假设建了一个名为”BOOKMARKNAME”的书签),然后使用C#操作Word: using MSWord = Microsoft.Office.Interop.Word; //引用命名空间 private MSWord.Application ...
  • 操作方法: ctrl+H,跳出替换对话框。该对话框有三栏,分别为:查找、替换、定位。我们利用定位功能进行查找。如下所示: 便可以逐个参考文献进行确定。漏了的或者用过的记录下来即可
  • 适用于: Word 2016, Word 2013, Word 2010, Word Online, Word Starter, Word Starter ...Word 提供了用于查找文档中的特定内容的多个选项。您可以搜索和替换文本、 图像、 标题、 书签、 或某些类型的格式,如段落
  • word里Tab制表符查找替换成^p

    千次阅读 2018-11-25 20:27:27
    按Ctrl+H组合键进入“替换”命令对话框; 在“查找内容”一栏内输入“^t”,在“替换为”一栏内输入“^p”,单击“全部替换”即可。
  • 遇到这样一个需求:需要定位Word文档中的每个书签,并对书签内容进行替换.具体用法在这里记录一下: 这里主要用到的是python中的win32com模块 1.获取word文档中的所有书签 代码如下: from win32com import client ...
  • 方法一: 今天有一朋友从网上下载了一个Word文档,可是打开该Word文档发现无法修改、查找、编辑,更可恶的是都不能选中Word文档中的内容。其实这是由于该Word文档被文档保护了的原因,解决方法请接着往下看。 1、...
  • 原来的WORD文档内容是这样的: 1、硬盘出厂后必须经过格式化才能使用。 2、显示器是由监视器与显示适配卡两部分组成的。 ....... 内容类似于带考试试卷上答案的填空题。目前的需求是把答案部分留空,并设置下画线,...
  • c#对word操作的查找替换功能

    千次阅读 2009-10-19 13:07:00
    True,则查找操作定位于要查找的文字的所有形式(例如,查找“sit”的同时,还查找“sitting”和“sat”),相当于“查找和替换”对话框 中的“查找单词的各种形式”复选框。 Forward Variant 类型,可选。...
  • Spire.Doc是一个专业的Word .NET库,工业级Word控件,高效开发.NET平台的Word文档文件,领跑工业4.0。设计用于帮助开发人员高效地开发创建、阅读、编写、转换和打印任何来自.NET( C#, VB.NET, ASP.NET)平台的Word...
  • word内容关键字搜索

    千次阅读 2013-06-03 15:57:35
    我的电脑里大约有几千个Word文档,分类比较多,有点乱,再加上从根目录开始,有多层子目录,文档名字大多相似,很多时候记不住文档的名字了,只是记得内容的个别词汇,于是我进入那个文件夹,开始用系统自带的关键字...
  • VB查找并替换WORD文档中的字符串

    千次阅读 2008-12-16 09:37:00
    基本要求:需安装WORD Function WordReplace(FileName As String, SearchString As String, ReplaceString As String, Optional SaveFile As String = "", Optional MatchCase As Boolean = False) As Integer On ...
  • Word跳转到指定页数

    千次阅读 2013-11-14 16:31:26
    在编辑Word的时候,如果页数太多,跳转到... 单击Word窗口状态栏左下角的页面,弹出查找和替换窗口,在定位标签中选择页码定位(默认),输入页号,然后定位即可。  或者点击查找——>高级查找,弹出相关页面。
  • 1.插入书签  要使用书签,首先在文档插入书签,方法如下:  (1)单击要插入书签的位置或者选定要加书签的一段文字。... (5)如果要使用Word 内置的隐藏书签,可以选中【隐藏书签】 按钮,将列
  • Jacob控制word文档拷贝段落内容

    千次阅读 2013-11-25 19:04:28
    研究这个的目的是想用java生成符合格式的word文档,文档内容大体上有三种格式,Heading1、Heading2和Normal,在word的文档结构图显示的样子如下 Heading 1  Heading 2  Heading 2  Heading 2 H

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,607
精华内容 19,042
关键字:

word查找定位内容