python在word文档中插入题注和查找题注

部署运行你感兴趣的模型镜像

目录

1、打开word文档

2、在文档中为图片插入题注

3、在文档中为表格插入题注

4、遍历所有题注

5、更新题注编号


 

在自动化处理word时,可以使用脚本为word文档中图片和表格插入题注;也可以查找word文档中已经插入的题注,查看并修改。

1、打开word文档

import win32com.client as win32
from win32com.client import constants
import os

curr_path = os.getcwd()
doc_app = win32.gencache.EnsureDispatch('Word.Application')#打开word应用程序
doc_app.Visible =1#设置应用程序可见
doc = doc_app.Documents.Open(r'%s\批量插入题注示例文档.docx'%curr_path)#创建新得文档

word文档未插入前的状态:

 

5a2f40d7e9324f8aa3290a1837098d13.png

插入后的效果:

1cb0c608e7d14f2f9d065fe6d8c665d5.png

 

2、在文档中为图片插入题注

pic_cap_label = doc_app.CaptionLabels.Add('图')
for item in doc.InlineShapes:
	if(item.Type == constants.wdInlineShapePicture):
		rng = item.Range
		rng.InsertCaption(Label= pic_cap_label,Position=constants.wdCaptionPositionBelow,Title="咖啡杯")

Position参数决定了题注插入的位置。这里图片的题注是在下方插入的。

遍历图片的方法,对于一些文档中还包含其他的类型的InlineShape的,还需要使用Type类型过滤。其他的类型分类如下:

826819551f6c4f1ba0aec4c3a8740de6.png

 

3、在文档中为表格插入题注

tab_cap_label = doc_app.CaptionLabels.Add('表')# 添加自定的题注
for table in doc.Tables:
	rng = table.Range
	rng.InsertCaption(Label= tab_cap_label,Position=constants.wdCaptionPositionAbove,Title="省份省会表")

 使用for遍历所有的表,然后在表格上面插入题注。Tables只包含表格, 就没有type的判断。

4、遍历所有题注

查找题注时,我尝试过使用Find.Execute来搜索,但是没有起效。只找到一种比较笨的方法,就是遍历每一行的style。在文档中,插图的题注,整个段落的style都是统一的。

for parag in doc.Paragraphs:
	# if(parag.Style==doc_app.ActiveDocument.Styles('题注')):# 这种判断条件无法起效
	if(parag.Style.NameLocal =='题注'):
		print(parag.Range.Text[:-1]) #去除段尾的换行符

 这里在判断style时,发现使用NameLocal可以正常判断。NameLocal就是word中看到的样式名称。此外,直接使用style变量进行比较,不知道为什么无法区分开样式。

5、更新题注编号

for parag in doc.Paragraphs:
	
	if(parag.Style.NameLocal =='题注'):
		parag.Range.Fields.Update()

除了逐个段遍历,还可以直接全文整体更新。

doc.Content.Fields.Update()

 

 

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flashman911

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值