python docx 中文字型設定
阿新 • • 發佈:2019-02-10
最近用到了docx生成word文件,docx本身用起來很方便,自帶的各種樣式都很好看,美中不足的就是對中文的支援不夠好。在未設定中文字型的時候,生成的文件雖然可以顯示中文,但是筆畫大小不一,很難看。
解決辦法:
首先建立一個文件,要先宣告一個document:
from docx import Document
document = Document()
docx內建的樣式都可以通過document.styles取到。
正文是Normal, 標題樣式根據標題宣告的基本,分別從Heading 1 到Heading 9, 另外還有table、list等各種word對應的樣式。可以通過遍歷document.styles檢視。
我們以正文Normal為例。先來看看涉及字型更改的是style object裡面的哪些屬性。
1. document.styles[‘Normal’].font.name
2. document.styles[‘Normal’]._element.rPr.rFonts
只更改font.name是不夠的,還需要呼叫._element.rPr.rFonts的set()方法。
綜合起來這樣
from docx.oxml.ns import qn
document.styles['Normal'].font.name = u'宋體'
document.styles['Normal' ]._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體')
問題解決, 表格中字型成功更改為”宋體”.