一、我的代碼:
因為要編一個報告自動化生成的代碼,是以用了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'黑體'