因为工作需要操作一些word文档,记录一下学习思路

#-*- encoding: utf8 -*-
import win32com
from win32com.client import Dispatch, constants
import win32com.client
import __main__
import os
import new
import sys
import re
import string
reload(sys)
sys.setdefaultencoding('utf8')
#from fileinput import filename

class Word(object):
    #初始化word对象
    def __init__(self, uri):
        self.objectword(uri)

    #创建word对象
    def objectword(self,url):
        self.word = win32com.client.Dispatch('Word.Application')
        self.word.Visible = 0
        self.word.DisplayAlerts = 0

        self.docx = self.word.Documents.Open(url)
        self.wrange = self.docx.Range(0, 0)

    #关闭word
    def close(self):
        self.word.Documents.Close()
        self.word.Quit()
    #创建word
    def create(self):

        pass
    #在word中进行查找
    def findword(self, key):
        question = []
        uri = r'E:\XE\ctb.docx'
        self.objectword(uri)
        #读取所有的word文档内容
        range = self.docx.Range(self.docx.Content.Start,self.docx.Content.End)
        question = str(range).split("&")
        #查找内容
        #question = re.split(r"(\r[1][0-9][0-9]+.)",str(range))
        #l = question[0].split("\d+.")
        for questionLine in question:
            questionLine = questionLine.strip('\n')
            l = re.split(r"([1][0-9][0-9]+.)",questionLine)
            del l[0]
            for t in l:
                s = str(key[0:3])
                if str(t).find(s) > -1:
                    #插入
                    g = string.join(l)

                    print g.encode('gb2312')
                    #print g.decode("")
                    self.insertword(g)
                    print "sss"
                else:
                    print "ttt"

    #插入word
    def insertword(self,w):
        url = r'E:\XE\ctb.doc'
        self.objectword(url)
        self.wrange.InsertAfter(w)
        pass

    #读取数据源
    def source(self, src):
        f = open(src)
        d = f.readlines()
        for l in d:
            name, question01, question02, question03, question04, question05 = tuple(l.decode('utf8').split('\t'))
            if question01 != u'全对':
                #self.wrange.InsertAfter(name)
                self.findword(question01)
        return self

Word(r'E:\XE\xx.docx').source(r'E:\XE\xe.txt').close()

  

python 操作word文档的更多相关文章

  1. 利用Python操作Word文档【图片】

    利用Python操作Word文档

  2. python操作docx文档(转)

    python操作docx文档 关于python操作docx格式文档,我用到了两个python包,一个便是python-docx包,另一个便是python-docx-template;,同时我也用到了很 ...

  3. Python之word文档替换字符串(也可以用于短模板套用)

    Python之word文档替换字符串(也可以用于短模板套用),代码如下: 1 ''' 2 #word模板套用1:创建模板,适合比较短的文档 3 ''' 4 5 #导入所需库 6 from docx i ...

  4. iText操作word文档总结

    操作word文档的工具有很多,除了iText之外还有POI,但是POI擅长的功能是操作excel,虽然也可以操作word,但是能力有限,而且还有很多的bug,技术并不成熟,下面就重点介绍一种操作wor ...

  5. C#操作Word文档(加密、解密、对应书签插入分页符)

    原文:C#操作Word文档(加密.解密.对应书签插入分页符) 最近做一个项目,客户要求对已经生成好的RTF文件中的内容进行分页显示,由于之前对这方面没有什么了解,后来在网上也找了相关的资料,并结合自己 ...

  6. Java文件操作系列[3]——使用jacob操作word文档

    Java对word文档的操作需要通过第三方组件实现,例如jacob.iText.POI和java2word等.jacob组件的功能最强大,可以操作word,Excel等格式的文件.该组件调用的的是操作 ...

  7. 使用Python操作Excel文档(一)

    Python | 使用Python操作Excel文档(一) 0 前言 在阅读本文之前,请确保您已满足或可能满足以下条件: 请确保您具备基本的Python编程能力. 请确保您会使用Excel. 请确保您 ...

  8. Python之word文档模板套用 - 真正的模板格式套用

    Python之word文档模板套用: 1 ''' 2 #word模板套用2:套用模板 3 ''' 4 5 #导入所需库 6 from docx import Document 7 ''' 8 #另存w ...

  9. Python读取word文档内容

    1,利用python读取纯文字的word文档,读取段落和段落里的文字. 先读取段落,代码如下: 1 ''' 2 #利用python读取word文档,先读取段落 3 ''' 4 #导入所需库 5 fro ...

随机推荐

  1. T-SQL 运行时生成语句

    运行时生成语句 1.用EXECUTE执行动态命令 EXECUTE命令可以执行存储过程.函数和动态的字符串命令.注意此语句的作用正如前面在介绍批处理时,如果批中的第一条语句是"EXECUTE存 ...

  2. 【转】log4j详解及简易搭建

    原文链接:http://www.cnblogs.com/mailingfeng/archive/2011/07/28/2119937.html log4j是一个非常强大的log记录软件. 首先当然是得 ...

  3. ld - linker

    [ld - linker] NAME ld -- linker SYNOPSIS ld files...  [options] [-o outputfile] DESCRIPTION The ld c ...

  4. POP3&SMTP&IMAP

    [POP3&SMTP&IMAP] IMAP是什么? IMAP,即Internet Message Access Protocol(互联网邮件访问协议),您可以通过这种协议从邮件服务器上 ...

  5. STL学习系列八:Set和multiset容器

    1.set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列.元素插入过程是按排序规则插入,所以不能指定插入位置. set采用红黑树变体的数据结构实 ...

  6. QListWidgetItem带上颜色的问题

    new_item = QListWidgetItem(_fromUtf8(item_content), self.listWidget) 首先创建一个QListWidgetItem,第一个参数内容是I ...

  7. CCF 201403-1 相反数 (水题)

    问题描述 有 N 个非零且各不相同的整数.请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数). 输入格式 第一行包含一个正整数 N.(1 ≤ N ≤ 500). 第二行为 N 个用单 ...

  8. UVaLive 6694 Toy Boxes (二分+想法)

    题意:给出n个数,把n个数放在三个盒子里,每个盒子里的数绑在一起,要拿出来任何一个数的时候,所承担的重量是整个盒子的总重量,求最小总重量和. 析:感觉吧,就是轻的放的多一些,拿的次数多一些,大的放的少 ...

  9. ebj笔记

    所有EJB3.0开发商都必须提供一个JMS provider的实现,JMS provider对于message-driven bean而言绝对是必须的.JMS是一套用于访问企业消息系统的开发商中立的A ...

  10. 那些不被关注但很重要的html标签

    1.meta标签: <meta> 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. <meta> 标签位于文档的头部, ...