点击上方“AI搞事情”关注我们
Python操作Word(Win32com)https://zhuanlan.zhihu.com/p/67543981
Office VBA 参考https://docs.microsoft.com/zh-cn/office/vba/api/overview
win32com 模块主要为 Python 提供调用 windows 底层com组件的操作的功能,COM 组件为微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一套接口规范,很多大型软件都使用 COM 来提供 API,不过目前只在windows上用。COM组件可以是一个Dll(进程内组件),也可以是一个EXE(进程外组件),一个COM组件可以包含多个COM对象,一个COM对象又可以有多个接口。
MS Office、WPS 都可以通过底层com组件对其进行调用,相比于python-docx、pydocx或者修改docx的xml文件,win32com可以直接使用VBA的相关接口,灵活性更好,适用性更高。
一、安装
pip install pypiwin32
二、新建文档
import os
from win32com.client import Dispatch, DispatchEx# 获取当前路径
pwd = os.getcwd()
# app = DispatchEx('Word.Application') # MS word
app = DispatchEx("Kwps.Application") # WPS# 新建word文档
doc = app.Documents.Add()
# 打开文档
# doc = app.Documents.Open('文档路径')
# 显示更新界面
app.Visible = True
app.ScreenUpdating = True
# 文档开始位置插入内容
doc_range1 = doc.Range(0, 0)
doc_range1.InsertBefore('hello python word doc!')
# 文档末尾位置插入内容
doc_range2 = doc.Range()
doc_range2.InsertAfter(' word end')
# 在文档指定位置添加内容
i = 5
doc_range3 = doc.Range(0, i)
doc_range3.InsertAfter(" insert position i")
# 必须使用绝对路径进行保存和另存
# doc.Save() # 如果文档以前未保存过,则 “另存为” 对话框将提示用户键入文件名。
doc.SaveAs(os.path.join(pwd, 'python_word.docx'))
# 关闭 word 文档
doc.Close()
# 关闭软件
app.Quit()
至此,在当前路径下创建了名为python_word.docx的word文件,包含内容:hello insert position i python word doc!word end
三、word相关对象
Application:表示 Word 应用程序。Application 对象包含可返回顶级对象的属性和方法,包含菜单栏、工具栏、命令以及所有文档。
两种方式获取Application对象:
Dispatch:新建实例
DispatchEx:启动独立的进程
Documents:文档对象,可以存着多个Document,相当于word打开多个文档。
两种方式获取文档对象:
# 新建文档
doc = app.Documents.Add()
# 打开文档
doc = app.Documents.Open('Word文件路径')
**Range**(Start, End)方法来指定文档的特定范围,文档第一个字符位置为0,最后一个字符的位置为文档的字符总数,未提供参数时全选内容。
Selection:选区,文档选择区域或者插入点(光标闪烁位置),整个文档只能同时激活一个选区,默认插入点在文档开始位置。
s = app.Selection
Font:包含对象的字体属性(如字体名称、字号、颜色等)。
# 获取选区或者区域字体对象
font = s.Font
# 或
font = r.Font
设置字体
# 字体设置为仿宋,电脑上必须安装有该字体
font.Name = '仿宋'
# 字号设置为三号
font.Size = 16
PageSetup:代表页面设置对象。 对于 PageSetup 对象作为属性包含文档 (如左边的距、 下边距和纸张大小) 的所有页面设置属性。
# 获取页面设置对象
ps = doc.PageSetup
# 上边距79磅
ps.TopMargin = 130
# 页面大小,A3、A4分别为6,7
ps.PaperSize = 6
更多对象和属性设置可以去官网文档查看学习。
长按二维码关注我们
有趣的灵魂在等你