Application & Documents
from win32com.client import Dispatch
# 建立一个Application对象
word = Dispatch('Word.Application')
# 设置可见
word.Visible = True
# Documents是Application的直接子级API,通过Application直接调用Documents
# 创建一个新文档并返回一个Document对象
new_doc = word.Documents.Add()
# 打开一个已有的文档并返回一个Document对象,参数为文档路径
exist_doc = word.Documents.Open('file_path')
# Open方法的详细参数
exist_doc = word.Documents.Open(
FileName='文件路径',
ReadOnly=False, # 是否以只读方式打开
PasswordDocument='打开密码'
)
# 保存、另存为、关闭、退出
doc.Save()
doc.SaveAs('file_path')
doc.Close()
word.Quit()
Selection & Range
Selection
一个文档中,永远只有一个Selection
对象,它等同于鼠标,鼠标选中某段文字,处理完后再选择另外一段文字,之前所选中的范围将会消失。
# 声明选区范围
s = word.Selection # 全选文档
# Selection 的常用属性
s.Start = 0 # 返回或设置选定内容的起始字符位置
s.End = 10 # 返回或设置所选内容的结束字符位置
s.Text = 'string' # 返回或设置指定的选定内容中的文本
s.Find # 返回一个 Find 对象,该对象包含查找操作的条件
s.Font # 返回或设置一个 Font 对象,该对象代表指定对象的字符格式
# Selection 的常用方法
s.MoveStart(Object, Object) # 移动指定的所选内容的起始位置
s.MoveEnd(Object, Object) # 移动所选内容的结束字符位置
s.TypeText(String) # 在选定内容之前插入指定的文本
Range
一个文档中可以声明无数个Range
对象,可以很方便地操作各种资源。
Range 用法
Range(Start: int, End: int) -> Range
使用Range声明选择某范围资源,表示选择了从Start
开始,截至End
的范围。
1. 使用Range全选文档
rng1 = doc.Range()
2. 使用Range选择一段文档
rng2 = doc.Range(0,10)
3. 使用Range声明一个无内容的范围:插入点
rng3 = doc.Range(20,20)
Range.Start & Range.End 属性
两个属性分别可以获取或设置范围的起始位置和结束位置,在实操中,有时候Range
的范围并不是通过Range(Start, End)
这种方式来声明的,而是某种方式,比如使用Document.Paragraphs(1)
获得文章第一段,而某些操作只能在Range
对象下才能操作,那么可以使用,Document.Paragraphs(1).Range
将第一段的段落对象
转换成了Range
对象,此时就可以通过Range.End
来获得范围的结束位置。
MoveStart & MoveEnd方法
1、MoveStart(Unit=1, Count=1)
该方法可以改变范围的起始位置,可以扩大范围也可以减少范围,参数说明:
-
Unit:按什么单位移动,
1
表示字符,2表示单词,3
表示句子,4
表示段落 -
Count:执行一次要移动多少个Unit,正数表示往后移动(文档结束的方向),负数表示往前移动(文档开头的方向)
2、MoveEnd(Unit=1, Count=1)
参数和MoveStart
一模一样。
rng3 = doc.Range(0,4)
rng3.MoveStart(Unit=4, Count=1)
print(rng3.Start, rng2.End)
# 移动后打印起始位置和结束位置
>>>
(262, 262)
无论是MoveStart还是MoveEnd,如果一方的位置超越了另一方,两个点就会重叠并形成插入点,最后一起移动到目标位置。
使用Range写入文本
Range.Text重新赋值实现插入
# 在0,0的位置声明一个插入点
rng1 = doc.Range(0,0)
# 使用Text属性插入内容
rng1.Text = 'xxxx'
注意:除非你想替换范围中的内容,否则不要轻易使用有内容的范围来执行
doc.Range(0,10).Text = '插入的内容'
语句。
InsertBefore和InsertAfter方法插入
InsertBefore:在范围的起始位置插入内容。
InsertAfter:在范围的结束位置插入内容。
插入段落标记
另起一段是word编辑中常用的功能,使用回车即可实现,在word编程中,有三个方法可以实现的。
InertParagraph:使用段落标记\r
替换原来范围中的内容,并形成新段落。
使用段落标记\r
替换原来范围中的内容,并形成新段落。
InsertParagraphBefore:在范围起始位置插入一个段落标记\r
,当前范围会形成一个新段落。
InsertParagraphAfter:在结束位置插入\r
,作用完全一样。