word——自动化办公上篇

def func_word():
    from docx import Document
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    from docx.shared import Pt  #磅数
    from docx.oxml.ns import qn #中文
    from docx.shared import Inches  #图片尺寸
    import time

    today=time.strftime("%Y%m%d",time.localtime())
    print(today)
    today=time.strftime("%Y{y}%m{m}%d{d}",time.localtime()).format(y='年',m='月',d='日')
    print(today)

    price=33#input()
    company_list = ['client1', 'client2', 'client3']

    for i in company_list:

        #零、创建文档,设置西文字体,设置中文字体
        document=Document()
        document.styles['Normal'].font.name=u'宋体'
        document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'),u'宋体')

        #一、创建页眉
        document.add_picture('pic.jpg',width=Inches(1))

        #二、创建标题段落,居中,段前行距5磅,段后行距5磅
        p1=document.add_paragraph()
        p1.alignment=WD_ALIGN_PARAGRAPH.CENTER
        p1.space_after=Pt(5)
        p1.space_before=Pt(5)

        #二(续)、创建段落里面的文字,设置西文字体,设置中文字体,字号,加粗
        run1 = p1.add_run('关于下达%s产品价格的通知' % (today))
        run1.font.name='微软雅黑'
        run1._element.rPr.rFonts.set(qn('w:eastAsia'),u'微软雅黑')
        run1.font.size=Pt(21)
        run1.font.bold=True

        #三、创建正文两段段落
        p2=document.add_paragraph()
        run2=p2.add_run(i + ': ')
        run2.font.name='仿宋_GB2312'
        run2.element.rPr.rFonts.set(qn('w:eastAsia'),u'仿宋_GB2312')
        run2.font.size=Pt(16)
        run2.font.bold=True

        p3 = document.add_paragraph()
        run3 = p3.add_run('    根据公司安排,为提供优质客户服务,我单位拟定了今日黄金价格为%s元,特此通知。' % price)
        run3.font.name = '仿宋_GB2312'
        run3.element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312')
        run3.font.size = Pt(16)
        run3.font.bold = True

        #四、创建表格
        table=document.add_table(rows=3,cols=3,style='Table Grid')
        table.cell(0,0).merge(table.cell(0,2))
        table_run1=table.cell(0,0).paragraphs[0].add_run('XX产品报价表')
        table_run1.font.name=u'隶书'
        table_run1.element.rPr.rFonts.set(qn('w:eastAsia'), u'隶书')
        table.cell(0,0).paragraphs[0].alignment=WD_ALIGN_PARAGRAPH.CENTER

        table.cell(1, 0).text = 'date'  #text与run的区别是text不可改样式,只能用默认样式
        table.cell(1, 1).text = 'price' #而run的意义是,同一文本框下,也可以有不同样子的文字
        table.cell(1, 2).text = 'date'
        table.cell(2, 0).text = today
        table.cell(2, 1).text = str(price)
        table.cell(2, 2).text = ''

        #五、创建署名日期段落
        p4 = document.add_paragraph()
        p4.alignment=WD_ALIGN_PARAGRAPH.CENTER
        run4 = p4.add_run('联系人:小杨    电话:88888888')
        run4.font.name = '仿宋_GB2312'
        run4.element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312')
        run4.font.size = Pt(16)
        run4.font.bold = True

        #六、换页
        document.add_page_break()
        p5=document.add_paragraph()
        run4=p5.add_run('此处是广告')

        #七、保存
        document.save('%s-价格通知.docx' % i)

    #八、读取文件(如果要修改的话就把print语句换成赋值并保存为新文件即可)
    docx=Document('test0.docx')
    all_paragraphs=docx.paragraphs
    for i,paragraph in enumerate(all_paragraphs):
        print(i,paragraph.text)#最后的第6段是表格,text为空
    all_talbes=docx.tables
    for i,table in enumerate(all_talbes):
        for j,row in enumerate(table.rows):
            for k,cell in enumerate(row.cells):
                print(i,j,k,cell.text)

    import zipfile
    word=zipfile.ZipFile('test0.docx')
    xml=word.read('word/document.xml').decode('utf-8')
    xml_list=xml.split('<w:t>')#找左界
    text_list=[]
    for i in xml_list:
        if i.find('</w:t>')+ 1:#找右界,这里+1很巧妙,因为找不到会返回-1,加了一就是0即false
            text_list.append(i[:i.find('</w:t>')])
        else:
            pass
    text=''.join(text_list)
    print(text)

func_word()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值