python读取word的自动编号以及添加自动编号

目录

1、读取编号

读取示例

如何判断段落是否有自动编号呢?

如何区分不同的类型编号呢?

2、添加自动编号


有的时候需要提取word中带自动编号的信息。对于word中的文字很多第三方的库都可以搞定,但是,提取格式,可能还是要用pywin32来搞定。

首先,需要知道自动编号的对象名称,即ListFormat。

注意区分一下ListFormat的2个属性:ListString和ListValue。看名字,感觉有点相似。

访问listformat的ListString,能获取到编号的字符串,即你看到word文档中编号的字符串,例如“1)”

而,ListValue,则读取到的是编号的值,例如文档中“5)”的编号,读取到的是5。

具体用哪个,就看个人需求。

1、读取编号

读取示例

示例文档内容,其中包含带编号的段落以及普通文本:

读取的效果:

可以看到正文行打印的结果为空字符串。

脚本:

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

curr_path = os.getcwd()
path = r'%s\带编号.docx'%curr_path
doc_app = win32.gencache.EnsureDispatch('Word.Application')#打开word应用程序
doc_app.Visible =1#设置应用程序可见
doc = doc_app.Documents.Open(path, ReadOnly=True)#打开文档

parags = doc.Paragraphs
for parg in parags:
	print(parg.Range.ListFormat.ListString)


如何判断段落是否有自动编号呢?

如果没有编号,则ListString返回的是空字符,即“”。

如何区分不同的类型编号呢?

可以使用属性ListType,不同的类型,返回值会不同。


对于使用pywin32库,最多的问题是,不知道word中,要操作的对象是什么名字,这个可以开启word的开发模式,录制一个宏。开启录制后,鼠标点击你要处理的对象,然后保存,就能看到vba代码了,然后看看里面用到什么对象,就可以很方便的查阅资料,搞定它了。

2、添加自动编号

还是以类似的文档为示例,先准备一个没有编号的文档。用脚本为其添加编号

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

doc_app = win32.gencache.EnsureDispatch('Word.Application')#打开word应用程序
doc_app.Visible = True
current_path = os.getcwd()
doc = doc_app.Documents.Open(current_path+r"\不带编号.docx")

ListGalleries = doc_app.ListGalleries 
template = ListGalleries(constants.wdNumberGallery)
for parag in doc.Paragraphs:
	rng = parag.Range
	rng.ListFormat.ApplyListTemplate(ListTemplate=template.ListTemplates(1))

ListGalleries可以选择三种类型:

分别对应word中的这三种:

ListTemplates(1)指向的是编号列表中的第一种样式,与word程序中列表样式的排序一致。

示例中的运行效果:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

flashman911

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

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

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

打赏作者

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

抵扣说明:

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

余额充值