Python docx 设置中文字体的完整步骤

沈知远
沈知远
发布时间:2026-10-13 | 5人浏览过
原创

本文介绍在 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 中文字体设置的完整操作方法,希望能为您提供参考。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表