• Python 读取 Word 详解(python-docx)


    1 概述

    1.1 第三方库:python-docx

    > pip install python-docx
    
    • 1

    2 新建文档

    2.1 空白文档

    import docx
    from docx import document
    
    # 1.新建 文档对象
    doc = docx.Document()
    # [可选] 代码提示。需增加下列代码
    # print(type(doc))
    assert isinstance(doc, document.Document)  # 格式:doc, doc 的类型
    
    # 2.保存文档,绝对路径 和 相对路径 均可
    # doc.save(r'C:\Users\Administrator\Desktop\test.docx')
    doc.save('test.docx')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2.2 标题

    import docx
    from docx import document
    
    # 1.新建 文档对象
    doc = docx.Document()
    # [可选] 代码提示。需增加下列代码
    # print(type(doc))
    assert isinstance(doc, document.Document)  # 格式:doc, doc 的类型
    
    # 2.添加 标题
    # 标题
    doc.add_heading(text='Python 操作 Word 教程', level=0)
    
    # 章节标题(Level = 0~9)
    doc.add_heading(text='第一章:Python 基础', level=1)
    doc.add_heading(text='1.1 Python 基础语法', level=2)
    
    # 3.保存文档
    doc.save('test.docx')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    效果图:
    在这里插入图片描述

    2.3 段落

    import docx
    from docx import document
    
    # 1.新建 文档对象
    doc = docx.Document()
    # [可选] 代码提示。需增加下列代码
    # print(type(doc))
    assert isinstance(doc, document.Document)  # 格式:doc, doc 的类型
    
    # 2.添加 文本段落
    paragraph = doc.add_paragraph('这是第一个文本段落')
    paragraph.insert_paragraph_before("在之前,添加段落")
    doc.add_paragraph(text='这是第二个文本段落', style='List Bullet')
    
    # 3.保存文档
    doc.save('test.docx')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述

    2.4 文本

    import docx
    from docx import document
    
    # 1.新建 文档对象
    doc = docx.Document()
    # [可选] 代码提示。需增加下列代码
    # print(type(doc))
    assert isinstance(doc, document.Document)  # 格式:doc, doc 的类型
    
    # 2.添加 文本(同 文本段落)
    paragraph = doc.add_paragraph()
    run = paragraph.add_run('这是一个文本')
    
    # 3.保存文档
    doc.save('test.docx')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.5 字体

    import docx
    from docx import document
    from docx.shared import Pt
    from docx.shared import RGBColor
    
    # 1.新建 文档对象
    doc = docx.Document()
    # [可选] 代码提示。需增加下列代码
    # print(type(doc))
    assert isinstance(doc, document.Document)  # 格式:doc, doc 的类型
    
    # 2.添加 文本(同 文本段落)
    paragraph = doc.add_paragraph()
    run = paragraph.add_run('这是一个文本')
    
    # 3.设置字体
    font = run.font
    font.name = '微软雅黑'  # 字体名称
    font.size = Pt(12)  # 字体大小
    font.color.rgb = RGBColor(255, 0, 0)  # 红色
    font.bold = True  # 加粗
    
    # 4.保存文档
    doc.save('test.docx')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    2.6 图片

    import docx
    from docx import document
    from docx.shared import Cm
    
    # 1.新建 文档对象
    doc = docx.Document()
    # [可选] 代码提示。需增加下列代码
    # print(type(doc))
    assert isinstance(doc, document.Document)  # 格式:doc, doc 的类型
    
    # 2.添加 图片,CM:厘米
    doc.add_picture('1.png', width=Cm(10), height=Cm(5))
    
    # 3.保存文档
    doc.save('test.docx')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.7 表格

    import docx
    from docx import document
    
    # 1.新建 文档对象
    doc = docx.Document()
    # [可选] 代码提示。需增加下列代码
    # print(type(doc))
    assert isinstance(doc, document.Document)  # 格式:doc, doc 的类型
    
    # 2.添加 表格
    table = doc.add_table(rows=2, cols=3)
    
    # 获取第一行第二列的单元格,并修改内容
    cell = table.cell(0, 0)
    cell.text = '我是 A1'
    
    # 输出单元格数据
    for row in table.rows:
        for cell in row.cells:
            print(cell.text)
    
    # 3.保存文档
    doc.save('test.docx')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    3 扩展

    3.1 修改文档

    import docx
    from docx import document
    
    # 1.创建 文档对象
    doc = docx.Document('test.docx')
    assert isinstance(doc, document.Document)
    
    # 2.修改 文档(其它同理)
    doc.paragraphs[0].text = '修改第一个段落'
    
    # 3.保存 文档
    doc.save('test.docx')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    3.2 读取文档

    import docx
    from docx import document
    
    # 1.创建 文档对象
    doc = docx.Document('test.docx')
    assert isinstance(doc, document.Document)
    
    # 2.读取 文档
    # 段落的文本
    for p in doc.paragraphs:
        print(p.text)
    
    # 3.保存 文档
    doc.save('test.docx')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    事务隔离级别
    HTML中如何给代码添加注释
    【Vue3 源码解析】nextTick
    基础 | 并发编程 - [LongAdder & Striped64]
    爱婴室主要股东再现减持:莫锐伟、王云亦是如此,业绩表现不理想
    Go语言类库-reflect(反射)
    App备案-iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹的获取方法
    快速响应性智能型/智能响应性聚乙二醇纳米/还原响应型水凝胶的研究与制备
    记录贴 Elasticsearch的RestClient进行DSL查询
    vue项目分环境配置打包处理
  • 原文地址:https://blog.csdn.net/qq_34745941/article/details/134040218