在python-docx包中对WORD文档字体的设置要使用font类,只需要更改font.name属性就可以了。然而,对于中文字体的设置远不是这么简单。

01一般情况下的字体设置

代码如下

from docx import Document # 导入包document = Document() # 新建一个paragraph1 = document.add_paragraph()run = paragraph1.add_run('aBCDefg这是中文')font = run.fontfont.name = '宋体'document.save('test.docx')运行后test.docx效果为:

字体设置的一般方式

这种形式设置字体是设置字体的一般方法,只对西文字体有效,对中文字体无效。

02解决方案

为了解决中文字体设置无效的问题,有的网友提出方案

from docx import Document # 导入docx包from docx.oxml.ns import qndocument.styles['Normal'].font.name = u'宋体'document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体') # 将段落中的所有字体paragraph1 = document.add_paragraph() # 添加一个段落run = paragraph1.add_run(u'aBCDefg这是中文') # 段落内增加内容1document.save('test.docx') # 存储文件效果为:

解决方案运行效果

使用了python-docx包中的样式,借助样式中的字符类型"eastAsia",将字符设置中文字体,宋体。代码中更改了“Normal”样式,确实是将段落的输入的内容设置成了“宋体”,但是,存在以下不足:

由于修改了全局样式“Normal”,所以将所有的中文字符都设置成了宋体,不能设置其他的中文字体,如:楷体等。由于对全局的中文字体起作用,如果要将段落内的个别中文字设置“宋体”则无法实现。

03改进的方案

为此,笔者将代码做如下修改:

from docx import Document # 导入Documentfrom docx.oxml.ns import qn # 导入qnfrom docx.enum.style import WD_STYLE_TYPEdocument = Document() # 新建word文档style_song = document.styles.add_style('Song', WD_STYLE_TYPE.CHARACTER)style_song.font.name = '宋体'document.styles['Song']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')paragraph1 = document.add_paragraph() # 添加新段落run = paragraph1.add_run(u'aBCDefg这是中文', style='Song')font = run.font # 获取字符的字体font.name = 'Cambira'run = paragraph1.add_run(u'aBCDefg这是中文') # 第一个段落内增加内容document.save('test.docx') # 存储WORD文档运行后docx文件效果为:

改进方案前段字的设置效果

改进方案后段字的设置效果

前段的字符,英文字符字体设置成了'Cambira',中文字符的字体设置了宋体。后段的字体为默认字体。实现了对段落中的任意字符设置成中文。

04再次改进的方案

当然如果还要实现在段落中有些中文字符设置“楷体”,“隶书”等多种字体,还需要对以上程序进行完善。

document = Document() # 新建docx文档style_song = document.styles.add_style('Song', WD_STYLE_TYPE.CHARACTER) # 设置Song字样式style_song.font.name = '宋体'document.styles['Song']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体') # 将段落中的所有字体style_song = document.styles.add_style('Kai', WD_STYLE_TYPE.CHARACTER)style_song.font.name = '楷体'document.styles['Kai']._element.rPr.rFonts.set(qn('w:eastAsia'), u'楷体') # 将段落中的所有字体style_song = document.styles.add_style('Lishu', WD_STYLE_TYPE.CHARACTER)style_song.font.name = '隶书'document.styles['Lishu']._element.rPr.rFonts.set(qn('w:eastAsia'), u'隶书') # 将段落中的所有字体paragraph1 = document.add_paragraph() # 添加段落run = paragraph1.add_run(u'aBCDefg这是中文', style='Song') # 设置宋体样式font = run.font #设置字体font.name = 'Cambira' # 设置西文字体paragraph1.add_run(u'aBCDefg这是中文', style='Kai').font.name = 'Cambira'paragraph1.add_run(u'aBCDefg这是中文', style='Lishu').font.name = 'Cambira'运行后效果为:

再次改进方案前段效果

再次改进方案中段效果

再次改进方案后段效果

文档中的文字分成前、中、后等三段,前段中的英文和中文的字体分别是'Cambira'和“宋体”,中段为'Cambira'和“楷体”,后段为'Cambira'和“隶书”。实现了对段落中的任意字符设置成任意中文字体,至此可以愉快地使用python-docx包设置中文字体了。

python设置中文字体_python-docx设置中文字体相关推荐

  1. python线条加粗_python docx 设置word表格边框(颜色/线型/粗细)

    曾经在网上苦苦寻找过python docx对word表格边框的设置,一直没有,现在终于有了,包括边框颜色.线型.宽度粗细的设置,直接用这个函数set_cell_border就行了(附加office的参 ...

  2. python 字体_python docx字体设置

    首先引入依赖包 from docx import Document from docx.oxml.ns import qn from docx.shared import Pt,RGBColor 如果 ...

  3. python颜色表_python docx设置表格单元格背景和文本颜色

    我正在使用python 2.7和docx,我想根据条件更改表格中单元格的背景和文本颜色.python docx设置表格单元格背景和文本颜色 我找不到任何关于单元格格式化的有用资源 有什么建议吗? 编辑 ...

  4. python查询mysql 乱码_python查询mysql中文乱码问题

    python2.7 查询或者插入中文数据在mysql中的时候出现中文乱码 --- 可能情况: 1.mysql数据库各项没有设置编码,默认为'latin' 2.使用MySQL.connect的时候没有设 ...

  5. python ip动态代理_Python 爬虫设置动态代理

    爬虫的时候,我们用同一个ip反复爬一个网站有可能会被封,这时候就需要使用到代理ip 网上有免费的开放代理,但有些代理ip稳定性差要经常更换且有些爬取后就不可用了还要再筛查 除了免费的外可以向代理供应商 ...

  6. python系统字体_Python matplotlib修改默认字体的操作

    matplotlib库作为Python常用的数据可视化库,默认字体居然不支持中文字体,必须得吐槽一下~ 闲言少叙,开始正文 方法1:在plot中指定prop参数 使用matplotlib.font_m ...

  7. python docx 设置字体_python docx 中文字体设置的操作方法

    这篇文章主要介绍了关于python docx 中文字体设置的操作方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 最近用到了docx生成word文档,docx本身用起来很方便,自带的 ...

  8. python支持中文吗_Python中使用中文

    这个问题曾在我初学Python的时候令我头疼不已,尤其是目前我们因为各种包的原因还只能使用2.x的版本.在3.x中字符编码已经统一用Unicode了. Python 默认支持的是ASCII字符,包含了 ...

  9. python代码桌面壁纸_Python实现设置windows桌面壁纸代码分享

    每天换一个壁纸,每天好心情. # -*- coding: UTF-8 -*- from __future__ import unicode_literals import Image import d ...

  10. python批量分析表格_python批量设置多个Excel文件页眉页脚的脚本

    python批量设置多个Excel文件页眉页脚的脚本 本文实例为大家分享了python批量设置多个Excel文件页眉页脚的具体代码,供大家参考,具体内容如下 import os import open ...

最新文章

  1. YOLOV3+window10+cuda8.0+cudnn6.0安装过程
  2. vue输入框联想词功能
  3. Css3实现波浪线效果1
  4. 将 k8s 制作成 3D 射击游戏,好玩到停不下来 | 文末福利
  5. iOS进阶(数据库之SQLite)
  6. 【hadoop】Hadoop Output directory file output already exists
  7. python写tcp通信程序_一个简单的基于TCP通信的服务器端与客户端程序
  8. USB 协议分析之 HID 设备(转)
  9. 零基础入门语义分割——Task1 赛题理解
  10. 谈谈出入React框架踩过的坑
  11. Spring Servlet 拦截器 过滤器
  12. 基于SSM 技术的服装店管理系统
  13. ArcPy常用类介绍
  14. 影子卫士和影子系统哪个好用_win7和win10系统哪个好用
  15. vue+drf没公网ip接入支付宝功能
  16. Failed to introspect Class druid问题
  17. (Xposed)编写第一个Xposed模块
  18. 采访:应用软件定制化有什么优点?
  19. CSS——制作三角形
  20. 使用机器学习来预测股票价格

热门文章

  1. 趣图 | 念念不忘必有回响
  2. Vin码识别功能实现
  3. verilog latch
  4. 梅特勒托利多xk3124电子秤说明书_托利多电子秤设置说明
  5. 【PMP】项目生命周期和开发生命周期
  6. 谷粒商城学习笔记(更新中)
  7. 亚马逊资源名称 (ARN) 和 AWS 服务命名空间
  8. 警惕一些野鸡国际出版社
  9. OSChina 周三乱弹 —— 余生指教NMB
  10. 判断char*是否为utf8编码