• 【Python】自动化办公之路:word自动化实战宝典!



    前言

    使用Python操作word大部分情况都是写操作,也有少许情况会用到读操作,在本次教程中都会进行讲解,本次课程主要用到以下4个库,请大家提前安装。

    一、环境安装

    升级pip(便于安装最新库)

    python -m pip install -U pip setuptools
    在这里插入图片描述
    python-docx(我们大部分操作都是使用此库)

    安装方法:

    pip install python-docx

    在这里插入图片描述
    使用方法:

    from docx import Document
    from docx.shared import Inches
    官方文档:

    https://python-docx.readthedocs.io/en/latest/index.html

    win32com(主要用作doc转docx格式转换用)

    安装方法:

    pip install pypiwin32
    在这里插入图片描述
    使用方法:

    import win32com
    from win32com.client import Dispatch, constants
    官方文档:

    https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.word?view=word-pia

    mailmerge(用作按照模板生成大量同类型文档)

    安装方法:

    pip install docx-mailmerge

    使用方法:

    from mailmerge import MailMerge
    官方文档:

    https://pypi.org/project/docx-mailmerge/

    matplotlib(Python 的绘图库,本期简单讲解,后期会有专门的课程)

    安装方法:

    pip install matplotlib

    使用方法:

    import matplotlib.pyplot as plt
    官方文档:

    https://matplotlib.org/3.2.2/tutorials/introductory/sample_plots.html
    在这里插入图片描述

    二、使用步骤

    1.引入库

    例代码1:

    from docx import Document
    document = Document()
    document.save('new.docx')
    
    • 1
    • 2
    • 3

    效果如下:

    2.读入数据

    代码如下(示例):

    data = pd.read_csv(
        'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
    print(data.head())
    
    • 1
    • 2
    • 3

    该处使用的url网络请求的数据。


    在这里插入图片描述
    示例代码 0.1 Python-docx新建文档.py:

    from docx import Document
    
    def GenerateNewWord(filename):
        document = Document()
        document.save(filename)
    
    if __name__ == "__main__":
        print("大家好!我们今天开始学习word文档自动化")
        print("我们先来直接生成一个名为‘new.docx’的文档")
        document = Document()
        document.save('new.docx')
    
        print("没错,里面什么都没有")
    
        # 我是华丽的分隔符
    
        print("我们使用函数生成一个word文档试试")
        newname = '使用函数生成的文档.docx'
        GenerateNewWord(newname)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这里插入图片描述

    Python-docx 编辑已存在文档

    我们很多时候需要在已存在的word文档上添加自己的内容,那么我们赶紧看看应该怎样操作吧~

    旧文档:
    在这里插入图片描述
    也许你会说,没有没搞错,就这三句话?是的,就这三句,你就完成了旧文档的复制,如果你想修改,直接添加内容就行了呢!

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

    win32com 将 doc 转为 docx

    在这里插入图片描述
    示例代码:

    import os
    from win32com import client as wc
    
    def TransDocToDocx(oldDocName,newDocxName):
        print("我是 TransDocToDocx 函数")
        # 打开word应用程序
        word = wc.Dispatch('Word.Application')
    
        # 打开 旧word 文件
        doc = word.Documents.Open(oldDocName)
    
        # 保存为 新word 文件,其中参数 12 表示的是docx文件
        doc.SaveAs(newDocxName, 12)
    
        # 关闭word文档
        doc.Close()
        word.Quit()
    
        print("生成完毕!")
    
    if __name__ == "__main__":
        # 获取当前目录完整路径
        currentPath = os.getcwd()
        print("当前路径为:",currentPath)
    
        # 获取 旧doc格式word文件绝对路径名
        docName = os.path.join(currentPath,'旧doc格式文档.doc')
        print("docFilePath = ", docName)
    
        # 设置新docx格式文档文件名
        docxName = os.path.join(currentPath,'新生成docx格式文档.docx')
    
        TransDocToDocx(docName,docxName)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

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

    win32com 操作 word

    打开新的word文档并添加内容

    示例代码

    import win32com
    from win32com.client import Dispatch, constants
    import os
    
    # 创建新的word文档
    def funOpenNewFile():
        word = Dispatch('Word.Application')
        # 或者使用下面的方法,使用启动独立的进程:
        # word = DispatchEx('Word.Application')
    
        # 如果不声明以下属性,运行的时候会显示的打开word
        word.Visible = 1  # 0:后台运行 1:前台运行(可见)
        word.DisplayAlerts = 0  # 不显示,不警告
    
        # 创建新的word文档
        doc = word.Documents.Add()
    
        # 在文档开头添加内容
        myRange1 = doc.Range(0, 0)
        myRange1.InsertBefore('Hello word\n')
    
        # 在文档末尾添加内容
        myRange2 = doc.Range()
        myRange2.InsertAfter('Bye word\n')
    
        # 在文档i指定位置添加内容
        i = 0
        myRange3 = doc.Range(0, i)
        myRange3.InsertAfter("what's up, bro?\n")
    
        # doc.Save()  # 保存
        doc.SaveAs(os.getcwd() + "\\funOpenNewFile.docx")  # 另存为
        doc.Close()  # 关闭 word 文档
        word.Quit()  # 关闭 office
    
    
    if __name__ == '__main__':
    
        print("当前文件路径名:",os.getcwd())
    
        print("调用funOpenNewFile()")
        funOpenNewFile()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    在这里插入图片描述
    打开已存在word文档并添加内容

    前提条件:
    在这里插入图片描述

    import win32com
    from win32com.client import Dispatch, constants
    import os
    
    # 打开已存在的word文件
    def funOpenExistFile():
        word = Dispatch('Word.Application')
        # 或者使用下面的方法,使用启动独立的进程:
        # word = DispatchEx('Word.Application')
    
        # 如果不声明以下属性,运行的时候会显示的打开word
        word.Visible = 1  # 0:后台运行 1:前台运行(可见)
        word.DisplayAlerts = 0  # 不显示,不警告
    
        doc = word.Documents.Open(os.getcwd() + "\\3.1 win32com测试.docx") # 打开一个已有的word文档
    
        # 在文档开头添加内容
        myRange1 = doc.Range(0, 0)
        myRange1.InsertBefore('Hello word\n')
    
        # 在文档末尾添加内容
        myRange2 = doc.Range()
        myRange2.InsertAfter('Bye word\n')
    
        # 在文档i指定位置添加内容
        i = 0
        myRange3 = doc.Range(0, i)
        myRange3.InsertAfter("what's up, bro?\n")
    
        # doc.Save()  # 保存
        doc.SaveAs(os.getcwd() + "\\funOpenExistFile.docx")  # 另存为
        doc.Close()  # 关闭 word 文档
        word.Quit()  # 关闭 office
    
    if __name__ == '__main__':
        print("当前文件路径名:",os.getcwd())
    
        print("调用funOpenExistFile()")
        funOpenExistFile()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

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

    总结

    以上就是今天要讲的内容,本文仅仅简单介绍了办公自动化的使用。

  • 相关阅读:
    java框架-Springboot3-web开发
    Python题库(含答案)
    在线记录学习笔记用哪一款工具?
    2023大连工业大学计算机考研信息汇总
    【T+】win10/win11系统安装畅捷通T+Cloud专属云18.0
    打造全身视角的医院可视化能源监测管理平台,实现医院能源可视化管理
    基于SSM的毕业设计管理系统【数据库设计、源码、开题报告】
    微视网媒:出光润滑油,只有老司机知道它的好
    RK3588平台开发系列讲解(USB篇)USB 外设 CONFIG
    Java实现Ip地址获取
  • 原文地址:https://blog.csdn.net/liaozp88/article/details/132981584