Python Word操作指南(入门教程第07讲)

python操作word

文章目录

  • python操作word
  • 一:新建word的相关处理
  • 1:新建一个空白文档
  • 2:标题设置
  • 3:段落的创建
  • 4:run设置文本和字体
  • 5:插入图片
  • 6:插入表格
  • 二:解析现有的word
  • 1:打开现有docx
  • 2:段落读取
  • 3:表格读取
  • 4:修改段落的内容
  • 5:修改表格内容
  • 6:页面格式设置
  • pip install python-docx
    

    一:新建word的相关处理

    1:新建一个空白文档

    import docx
    
    
    def create_docx(file_name):
        document = docx.Document()  # 创建一个word文档对象
        document.save(file_name)  # 保存文档到指定文件名
        print("Word文档创建成功!")
    
    
    if __name__ == '__main__':
        file_name = "word01.docx"
        create_docx(file_name)
    

    2:标题设置

    add_header(text=??? level=[0~9])

    import docx
    
    
    def create_docx(file_name):
        document = docx.Document()  # 创建一个word文档对象
        document.add_heading('这是一个大标题。', level=0)
        # level -> 0表示大标题,1表示中标题,2表示小标题 0 ~ 9
        document.add_heading('这是一个中标题。', level=1)
        document.add_heading('这是一个小标题。', level=2)
        document.add_paragraph('这是一个段落。')
        document.save(file_name)  # 保存文档到指定文件名
        print("Word文档创建成功!")
    
    
    if __name__ == '__main__':
        file_name = "word01.docx"
        create_docx(file_name)
    

    3:段落的创建

    add_paragraph(text)

    import docx
    
    def create_paragraph(file_name):
        document = docx.Document()  # 创建一个word文档对象
        document.add_heading('咏鹅。', level=0)
        document.add_paragraph("唐 骆宾王")
        document.add_paragraph("鹅  鹅  鹅")
        document.add_paragraph("曲项向天歌")
        document.add_paragraph("白毛浮绿水")
        document.add_paragraph("红掌拨清波")
        document.save(file_name)  # 保存文档到指定文件名
        print("Word文档创建成功!")
    
    if __name__ == '__main__':
        file_name = "word02.docx"
        create_paragraph(file_name)
    
    

    对于段落,还有一些其他操作

    import docx
    
    
    def create_paragraph(file_name):
        document = docx.Document()  # 创建一个word文档对象
    
        para = document.add_paragraph("我是一个段落")
        para.insert_paragraph_before("我是在前面插入的段落")
        document.add_paragraph(text="我也是一个段落", style="List Bullet")
    
        document.save(file_name)  # 保存文档到指定文件名
        print("Word文档创建成功!")
    
    if __name__ == '__main__':
        file_name = "word02.docx"
        create_paragraph(file_name)
    

    4:run设置文本和字体

    在Word文档中,Run是指一段连续的文本格式,包括字体、大小、颜色等。‌

    Run是Word文档中的一个基本概念,用于表示文档中具有相同格式的文本段落中的一部分。

    每个段落(Paragraph)可以包含多个Run,每个Run可以有不同的字体、字号、颜色等属性。

    通过操作Run,可以实现对文档中特定文本的精细控制。

    import docx
    
    def create_run(file_name):
        document = docx.Document()  # 创建一个word文档对象
        para = document.add_paragraph()  # 创建一个段落
        run = para.add_run("我是一个运行对象")  # 创建一个运行对象
        run.bold = True  # 设置字体为粗体
        run.italic = True  # 设置字体为斜体
        run.underline = True  # 设置字体为下划线
        run.font.color.rgb = docx.shared.RGBColor(0x00, 0x00, 0xFF)  # 设置字体颜色为蓝色
        document.save(file_name)  # 保存文档到指定文件名
        print("Word文档创建成功!")
    
    
    if __name__ == '__main__':
        file_name = "word03.docx"
        create_run(file_name)
    

    run对象的font属性:

    属性 描述
    alignment 对齐的方式
    all_caps 全部大写首字母
    bold 文本通过粗体的方式出现
    color.rgb 字体的颜色
    complex_script 是否为复杂代码
    cs_bold "复杂代码"加粗
    cs_italic "复杂代码"斜体
    double_strike 文本带双删除线
    emboss 文本通过凸出页面的方式出现
    font 文本字体属性
    hidden 隐藏
    imprint 文本以刻入页面的方式出现
    italic 文本以斜体的方式出现
    name 字体
    no_proof 不验证语法错误
    outline 文本以轮廓线出现,而不是实心的
    rtl 文本从右边到左边书写
    shadow 文本带有阴影
    small_caps 小型大写字母
    snap_to_grid 定义文档网格的时候对其网格
    strike 文本带有删除线
    subscript 下标
    superscript 上标
    text 具体的文本的内容
    underline 文本带有下划线
    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')
    

    5:插入图片

    add_picture(pic_path, width, height)

    import docx
    from docx.shared import Cm
    
    def create_picture(file_name):
        document = docx.Document()  # 创建一个word文档对象
        document.add_heading('这是一个带图片的段落。', level=0)
        document.add_paragraph('这是一个段落。')
        # 添加图片到文档中
        document.add_picture('1.png', width=Cm(10), height=Cm(10))  # 添加图片到文档中(图片路径,宽度,高度)
        document.add_paragraph('这是一个段落。')
        
        # 可以是run层控制
        para = document.add_paragraph("我是文字")
        r = para.add_run()
        r.add_picture('1.png', width=Cm(10), height=Cm(10))  # 添加图片到段落中(图片路径,宽度,高度)
        
        document.save(file_name)  # 保存文档到指定文件名
        print("Word文档创建成功!")
    
    
    if __name__ == '__main__':
        file_name = "word04.docx"
        create_picture(file_name)
    

    6:插入表格

    add_table(rows=?? , cols=??)

    import docx
    
    def create_table(file_name):
        document = docx.Document()  # 创建一个word文档对象
        document.add_heading('这是一个表格测试', level=0)
        document.add_paragraph("我是一个段落,我的下面是一个表格")
        # 创建一个表格
        table = document.add_table(rows=2, cols=3)
        # 设置表格的单元格宽度
        table.autofit = True
        for i in range(2):
            for j in range(3):
                # 设置单元歌的内容
                cell = table.cell(i, j)
                cell.text = str(i * 3 + j + 1)
    
        document.save(file_name)  # 保存文档到指定文件名
        print("Word文档创建成功!")
    
    
    if __name__ == '__main__':
        file_name = "word05.docx"
        create_table(file_name)
    

    二:解析现有的word

    1:打开现有docx

    from docx import Document
    
    # 在构造函数中指定要打开docx的路径
    doc = Document('example.docx')
    

    2:段落读取

    from docx import Document
    
    def read_paras(file_name):
        # 读取外部的file
        doc = docx.Document(file_name)
    
        for para in doc.paragraphs:
            print(para.text)
    
        for index, para in enumerate(doc.paragraphs, 1):
            print("{}: {}".format(index, para.text))
    
    
    if __name__ == '__main__':
        file_name = "word05.docx"
        read_paras(file_name)
    

    3:表格读取

    from docx import Document
    
    def read_tables(file_name):
        # 读取外部的file
        doc = docx.Document(file_name)
        for table in doc.tables:
            for row in table.rows:
                for cell in row.cells:
                    print(cell.text)
    
    
    if __name__ == '__main__':
        file_name = "word05.docx"
        read_tables(file_name)
    

    4:修改段落的内容

    from docx import Document
    
    def update_para(file_name, search_text, new_para_text):
        # 读取外部的file
        doc = docx.Document(file_name)
        for para in doc.paragraphs:
            if search_text in para.text:
                para.text = new_para_text
    
    
    if __name__ == '__main__':
        file_name = "word05.docx"
        update_para(file_name, "段落", "替换的段落")
    

    5:修改表格内容

    def update_table(file_name, search_text, new_cell_text):
        # 读取外部的file
        doc = docx.Document(file_name)
        for table in doc.tables:  # 遍历所有表格
            for row in table.rows:  # 遍历表格的所有行
                for cell in row.cells:  # 遍历表格的所有单元格
                    if int(cell.text) > search_text:  # 将所有的 > search_text的内容都替换成为new_cell_text
                        cell.text = cell.text.replace(cell.text, str(new_cell_text))
    
        # 查看更新后的结果
        for table in doc.tables:
            for row in table.rows:
                for cell in row.cells:
                    print(cell.text)
    
    
    if __name__ == '__main__':
        file_name = "word05.docx"
        update_table(file_name, 2, 9)
    

    6:页面格式设置

    我们可以使用Section对象来设置页面的格式。

    import docx
    from docx.shared import Pt
    
    def set_section_style(file_name):
        # 读取外部的file
        doc = docx.Document(file_name)
        # 设置section格式
        section = doc.sections[0]
        section.page_height = Pt(11692)  # 页高是11692 
        section.page_width = Pt(8268)  # 页宽是8268 
        section.left_margin = Pt(720)  # 左边距是720
        section.right_margin = Pt(720)  # 右边距是720
        section.top_margin = Pt(720)  # 上边距是720
        section.bottom_margin = Pt(720)  # 下边距是720
        section.header_distance = Pt(360)  # 页眉距离是360
        section.footer_distance = Pt(360)  # 页脚距离是360
        section.gutter = Pt(0)  # 行距是0
    
    
    if __name__ == '__main__':
        file_name = "word05.docx"
        set_section_style(file_name)
    

    作者:是小崔啊

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python Word操作指南(入门教程第07讲)

    发表回复