Python docx 设置中文字体的完整步骤
本文介绍在 Python 中使用 docx 库生成 Word 文档时解决中文显示问题的方法。通过获取 Normal 样式对象,修改 font.name 属性,并调用 _element.rPr.rFonts.set() 方法指定 w:eastAsia 为宋体,可实现表格及正文中文字体的正确显示。
近期在使用 docx 库生成 Word 文档时,发现虽然该库自带样式美观且使用便捷,但对中文的支持存在不足。若未明确设置中文字体,生成的文档中中文笔画粗细不均,视觉效果较差。
针对上述问题,可采取以下解决方案:
首先,需要初始化一个文档对象,具体操作为声明一个 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'宋体')
经此处理,表格中的字体已成功更改为“宋体”。
以上即为 Python docx 中文字体设置的完整操作方法,希望能为您提供参考。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









