最近在帮忙草拟一些制度,我先用的Excel编辑,然后用python一键生成Word文档,其他部分都很好找参照,唯一就是那个页码格式,我死活搞不成“- 1 -、- 2 -、……”这样的。

在网上摸索了好久也没相同的需求,我只能搞两个空Word设置页码,然后导出xml对比。

后来我发现在section部分,有一个pgNumType,把格式设置成numberInDash即可。

页码部分的完整代码如下:

from docx.shared import Pt
from docx.oxml.ns import qn
from docx.oxml.shared import OxmlElement
from docx.enum.text import WD_ALIGN_PARAGRAPH

……

# 设置页码
footer = section.footer
p = footer.paragraphs[0]
# 四号字体
p.style.font.size = Pt(14)
# 居中
p.style.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
# 行距为0
p.style.paragraph_format.first_line_indent = 0
# 插入页码
page_number = OxmlElement("w:fldSimple")
page_number.set(qn("w:instr"), r'PAGE')
run = OxmlElement("w:r")
run.append(page_number)
p._p.append(run)
# 设置为numberInDash
numberStyle = OxmlElement("w:pgNumType")
numberStyle.set(qn("w:fmt"), r'numberInDash')
section._sectPr.append(numberStyle)

……