python docx 中文字體設置

最近用到了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

有興趣深入研究的同學可以看看官方文檔對Font的介紹http://python-docx.readthedocs.io/en/latest/dev/analysis/features/text/font.html?highlight=font。 在這裏我們只需要更改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'宋體')

問題解決, 表格中字體成功更改爲”宋體”.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章