需要额外导入qn:
from docx.oxml.ns import qn
设置中文字体与西文字体不同,可能是word内部处理方式不同,主要是通过以下这句:
style.element.rPr.rFonts.set(qn('w:eastAsia'), '宋体') # style中
r._element.rPr.rFonts.set(qn('w:eastAsia'), '仿宋_GB2312') # run中
以下给出在style和run中设置的代码。
style中的设置
更改现有style
style = document.styles['Normal']
style.font.name = 'Times New Roman' # 必须先设置font.name
style.font.size = Pt(14)
style.element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
创建新style
mystyle = document.styles.add_style('titlepage_title', WD_STYLE_TYPE.PARAGRAPH)
mystyle.font.name = 'Times New Roman' # 必须先设置font.name
mystyle.font.size = Pt(16)
mystyle.font.bold = True
mystyle.element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
mystyle.paragraph_format.space_after = Pt(0)
# mystyle.paragraph_format.line_spacing_rule = WD_LINE_SPACING.ONE_POINT_FIVE
mystyle.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
mystyle.paragraph_format.line_spacing = 1.8
对创建的段落应用设置好的style即可改变中文字体。
run(大概是指段落中的格式相同的一批字符)中的设置
p = document.add_paragraph()
r = p.add_run('文字')
r.font.name = '仿宋_GB2312' # 必须先设置font.name
r._element.rPr.rFonts.set(qn('w:eastAsia'), '仿宋_GB2312')
r.font.size = Pt(14)