win32com 操作 word

本文介绍了如何通过Python的Microsoft.Office.Interop.Word库来操作Word应用程序,包括创建、打开文档,处理Selection和Range对象,以及执行文本插入、段落操作、查找替换和格式样式等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Application 接口 (Microsoft.Office.Interop.Word) | Microsoft Learn表示 Word 应用程序。icon-default.png?t=O83Ahttps://learn.microsoft.com/zh-cn/dotnet/api/microsoft.office.interop.word.application?view=word-pia

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,作用完全一样。

Paragraphs & Paragraph

Tables & Table

查找替换

格式样式

图片操作

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值