天天看點

python docx設定标題中文字型rPr.rFonts.set(qn(‘w:eastAsia‘),u‘黑體‘),報錯‘NoneType‘ object has no attribute ‘set‘

一、我的代碼:

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