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

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

本文介绍在 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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。