Python办公自动化 4.1 Python操作word:win32com 使用教程 操作word

课程大纲

第二章 Python10分钟入门
【2.1】:PyCharm社区版配置Anaconda开发环境
【2.2】:Python基础知识及正则表达式入门

第三章 Python操作Excel
【3.1】:xlrd 使用教程 读取 操作Excel
【3.2】:xlwt 使用教程 写入 操作Excel
【3.3】:xlutils 使用教程 修改 操作Excel
【3.4】:xlwings 使用教程 读取 写入 修改 操【作Excel
【3.5】:openpyxl 使用教程 读取 写入 修改 操作Excel
【3.6】:xlswriter 使用教程 读取 写入 修改 操作Excel
【3.7】:win32com 使用教程 读取 写入 修改 操作Excel
【3.8】:pandas 使用教程 读取 写入 修改 操作Excel

第四章 Python操作word
【4.1】:win32com 使用教程 操作word
【4.2】:python-docx 使用教程 操作word

第五章 Python操作ppt
【5.1】:win32com 使用教程 操作复制ppt PowerPoint
【5.2】:python-pptx 使用教程 操作ppt PowerPoint 添加文字 形状图表

win32com 模块主要为 Python 提供调用 windows 底层组件对 word 、Excel、PPT 等进行操作的功能,只能在 Windows 环境下使用,并且需要安装 office 相关软件才行(WPS也行)。

使用 win32com 模块主要是因为 Python 针对 word 文档操作的第三方库相对较少并且功能较弱,Python 有针对 .docx 后缀文件的第三方库如 python-docx、pydocx等等,但是没有针对 .doc 和 .wps 的第三方库,所以这里就只能使用 win32com 模块。

几个重要概念:

  • Application:WORD应用程序
  • Document :打开的文档对象
  • Range :基本上所有对象都是有Range属性的,而这也为我们排版提供了极大的便利
  • Paragraph: 段落,也就是我们文档中的一个段内容(可以是文本、图片等)
  • Section :新页
  • ParagraphFormat :设置格式

微软官方文档:https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.word?view=word-pia

4.1.1 pip安装win32com

pip install pypiwin32

由于我已经安装过了,所以提示已经安装:

image-20200615154927504

4.1.2 win32com操作word

import win32com
from win32com.client import Dispatch, constants
import os

# 获取当前脚本路径
def getScriptPath():
    nowpath = os.path.split(os.path.realpath(__file__))[0]
    print(nowpath)
    return nowpath

# 4.1.2 win32com操作word
def fun4_1_2():
    word = Dispatch('Word.Application')
    # 或者使用下面的方法,使用启动独立的进程:
    # word = DispatchEx('Word.Application')

    # 如果不声明以下属性,运行的时候会显示的打开word
    word.Visible = 1  # 后台运行
    word.DisplayAlerts = 0  # 不显示,不警告

    # doc = word.Documents.Add() # 创建新的word文档
    doc = word.Documents.Open(getScriptPath() + "\\4. win32com测试.docx") # 打开一个已有的word文档

    #读取内容
    # data = doc.paragraphs[0].text
    # print(data)

    # 在文档开头添加内容
    myRange1 = doc.Range(0, 0)
    myRange1.InsertBefore('Hello word')

    # 在文档末尾添加内容
    myRange2 = doc.Range()
    myRange2.InsertAfter('Bye word')

    # 在文档i指定位置添加内容
    i = 0
    myRange3 = doc.Range(0, i)
    myRange3.InsertAfter("what's up, bro?")

    # doc.Save()  # 保存
    doc.SaveAs(getScriptPath() + "\\new.docx")  # 另存为
    doc.Close()  # 关闭 word 文档
    word.Quit()  # 关闭 office

if __name__ == '__main__':
    fun4_1_2()

4.1.3 win32com转换word为pdf等格式

程序示例:

import win32com
from win32com.client import Dispatch, constants
import os

# 获取当前脚本路径
def getScriptPath():
    nowpath = os.path.split(os.path.realpath(__file__))[0]
    print(nowpath)
    return nowpath

# 4.1.3 win32com转换word格式
def fun4_1_3():
    from win32com import client as wc

    word = Dispatch("Word.Application")
    word.Visible = 0  # 后台运行,不显示
    word.DisplayAlerts = 0  # 不警告
    doc = word.Documents.Open(getScriptPath() + "\\4. win32com测试.docx") # 打开一个已有的word文档
    doc.SaveAs(getScriptPath() + "\\create_new.pdf", 17)  # txt=4, html=10, docx=16, pdf=17
    doc.Close()
    word.Quit()

if __name__ == '__main__':
    # fun4_1_2()
    fun4_1_3()

执行效果:

image-20200616094305823


以上模块功能可能没列举全,大家有什么希望的操作可以直接留言,我收到留言后会增加相关操作示例(若有),并对文章进行更新,谢谢大家!

返回《Python办公自动化之Word、Excel、PPT理论与实践》课程目录

猜你喜欢

转载自blog.csdn.net/u014779536/article/details/106781111
今日推荐