zoukankan      html  css  js  c++  java
  • python 办公自动化操作之office的word的读取与导出

    2个简单的代码,帮你实现word的导出和word的读取

    功能一:导出word,word中的内容为

     代码:

    from docx import Document
    from docx.enum.text import WD_PARAGRAPH_ALIGNMENT #设置对象居中、对齐等。
    from docx.enum.text import WD_TAB_ALIGNMENT,WD_TAB_LEADER #设置制表符等
    from docx.shared import Inches #设置图像大小
    from docx.shared import Pt #设置像素、缩进等
    from docx.shared import RGBColor #设置字体颜色
    from docx.shared import Length #设置宽度
    from docx.oxml.ns import qn
    import time
    today=time.strftime("%Y{y}%m{m}%d{d}",time.localtime()).format(y="",m="",d="")
    
    document=Document()
    document.styles["Normal"].font.name=u'宋体'# 设置文档的基础字体
    document.styles["Normal"].element.rPr.rFonts.set(qn('w:eastAsia'),u'宋体')#设置文档的基础中文字体
    
    
    #初始化建立第一个自然段
    p1=document.add_paragraph()
    p1.alignment=WD_PARAGRAPH_ALIGNMENT.CENTER#对齐方式为居中
    run1=p1.add_run("关于下达%s产品的通知"%today)
    run1.font.name="微软雅黑"
    run1.font.size=Pt(21) # 字体大小为21磅
    run1.font.bold=True #加粗
    p1.space_after=Pt(5)#段后距离5磅
    p1.space_before = Pt(5)# 段前距离5磅
    
    # 建立第一个自然段
    i='客户3'
    p2 = document.add_paragraph()
    run2 = p2.add_run("%s:" % 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("  根据公司安排,为提供优质客户服务,我单位将价格通知如下:" )
    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产品报价表')# 合并单位格内填入XX产品报价表
    table_run1.font.name = u"隶书"
    table_run1.element.rPr.rFonts.set(qn('w:eastAsia'), u'隶书')
    table.cell(0, 0).paragraphs[0].alighment=WD_PARAGRAPH_ALIGNMENT.CENTER#居中
    table.cell(1, 0).text='日期'
    table.cell(1, 1).text = '价格'
    table.cell(1, 2).text = '备注'
    table.cell(2, 0).text = today
    table.cell(2, 1).text ='100'
    table.cell(2, 2).text = ''
    
    document.add_page_break()#分页符
    document.save('价格通知.docx')#保存

    需要说明的是

    run3.font.name = "仿宋_GB2312"
    run3.element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312')
    这两句均是设置字体为
    仿宋_GB2312,之所以要两种格式写两遍,是因为word对中文支持不太友好,需要再填一句

    功能二:读取word,word中的内容为

     读取表格外文字的代码:

    from docx import  Document
    
    document=Document("长恨歌.docx")
    
    print("读取非表格中的内容:")
    all_paragraphs=document.paragraphs
    for paragraph in all_paragraphs:
        print(paragraph.text)

     读取表格内文字的代码:

    from docx import  Document
    
    document=Document("长恨歌.docx")
    print("读取表格中的内容:")
    tables=document.tables
    for i in range(len(tables)):
        tb=tables[i]#获取表格的行
        tb_rows=tb.rows #读取每一行内容
        for i in range(len(tb_rows)):
            row_data=[]
            row_cells=tb_rows[i].cells#读取每一行单元格内容
            for cell in row_cells:#单元格内容
                row_data.append(cell.text)
            print(''.join(row_data))
  • 相关阅读:
    junit单元测试
    方法引用
    方法引用表达式(1)
    Stream流的常用方法
    Stream流
    综合案例:文件上传
    tcp通信协议
    python 生成器与迭代器
    Python 序列化与反序列化
    python 文件操作
  • 原文地址:https://www.cnblogs.com/hzcjd/p/13263415.html
Copyright © 2011-2022 走看看