我们实际采用win32.com的client包对word进行进行办公自动化操作的时候会发现,word中几乎没有页这个概念,是由段落和章节定义的。一般情况下,很少有人在首页过后有很好的习惯采用另起一节的方式进行换页,几乎都是采用回车的方式到新的一页,这就导致整个文档没有节的概念,所以采用代码操作的时候没法把首页和其他页面区分开,不过word自己本身有个“首页不同”的选项,来实现首页不显示页码的功能,那么如何进行编码呢?下面我们来看一下具体的操作方式:
# 使用生成器
import win32com.client as win32
# 创建一个Word应用对象
word = win32.Dispatch("Word.Application")
# 打开现有的Word文档
doc = word.Documents.Open(r"XXX.docx")
# 显示Word应用(可选)
word.Visible = False
# 获取文档中的页眉和页脚
sections = doc.Sections
# 添加页码
# 可以在页眉或页脚中插入页码,这里我们选择在页脚插入
for section in doc.Sections:
footer = section.Footers(1) #1是个参数,代表所有页面的页脚
footer.Range.Fields.Add(footer.Range, 33,1) #33也是参数,代表添加页脚
footer.Range.ParagraphFormat.Alignment = 1 #居中
section.PageSetup.DifferentFirstPageHeaderFooter = True #实现word中的与首页不同功能,就是首页不显示页码
# 保存并关闭文档
doc.SaveAs(r"XXX.docx")
doc.Close()
# 退出Word应用
word.Quit()
print("页码已成功添加。")
需要说明的是,我这里遍历Sections其实是多余的,因为全文档只有一节,seciton也只有一个。
如果你还有什么跟好的方法请留言给我,大家一起交流!