一、我的代码:
因为要编一个报告自动化生成的代码,所以用了python docx,在设置标题自己写了一段代码,要求将标题设置成:一级标题 黑体 小四
from docx import Document
from docx.oxml.ns import qn
from docx.shared import Pt
def add_Head(document, level, text, font, size):
# document word对象
# level 几级标题
# text 标题内容
# font 标题字体,font=u'黑体'
# size 标题大小
title = document.add_heading(level=level)
title_run = title.add_run(text)
title_run.font.size = Pt(size) # 设置字体大小,小四对应值为12
title_run.element.rPr.rFonts.set(qn('w:eastAsia'), font) # font = u'黑体'
二、报错
采用 element.rPr.rFonts.set(qn(‘w:eastAsia’), u’微软雅黑’)方法
运行后报错:
‘NoneType’ object has no attribute ‘set’
三、解决
通过Debug和查资料发现,在采用element.rPr.rFonts.set(qn(‘w:eastAsia’), u’微软雅黑’)的set方法前,需要设置字体名字这个属性,即需要加上代码title_run.font.name=u’微软雅黑’,不然就会出现上面错误。
修改后的代码如下:
from docx import Document
from docx.oxml.ns import qn
from docx.shared import Pt
def add_Head(document, level, text, font, size):
# document word对象
# level 几级标题
# text 标题内容
# font 标题字体,font=u'黑体'
# size 标题大小
title = document.add_heading(level=level)
title_run = title.add_run(text)
title_run.font.size = Pt(size) # 设置字体大小,小四对应值为12
title_run.font.name = font # 设置字体类型属性
title_run.element.rPr.rFonts.set(qn('w:eastAsia'), font) # font = u'黑体'