python docx字体设置

安装

pip install python-docx

官方文档教程:https://python-docx.readthedocs.io/en/latest/

使用

首先引入依赖包

from docx import Document
from docx.oxml.ns import qn
from docx.shared import Pt,RGBColor

如果不进行字体手动设置的话,生成的文字字体格式就会千奇百怪,如下图

Doc = Document() 
Doc.add_heading("刚来csdn,这就是博客么,I了")
Doc.add_paragraph("Python ")
Doc.add_paragraph("Python 对word进行操作")
Doc.save("Python_word.docx")

在这里插入图片描述
可以看到自动配置的字体不是我们平常默认的宋体,而是一个歪果字体,无论是正文还是标题的字看着很乱。因此需要手动设置一下字体。

只需要在Doc = Document()下添加如下代码,就可以设置文本内容字体,颜色等等,方法是对font成员进行属性的修改。

Doc.styles['Normal'].font.name = u'宋体'
Doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
Doc.styles['Normal'].font.size = Pt(10.5)
Doc.styles['Normal'].font.color.rgb = RGBColor(0,0,0)

在这里插入图片描述可以看到正文内容的字体已经变成了我们想要的样子了,但蓝圈的标题依然还是有问题,可能因为标题不属于正文范围内吧,需要单独再设置一下。

对于标题来说,需要用这种方式设置字体

# 标题等级如1,2,3这些数字,一级标题二级标题这样
Head = Doc.add_heading("",level=标题等级)# 这里不填标题内容 
run  = Head.add_run("真正要填写的标题")
run.font.name=u'Cambria'
run._element.rPr.rFonts.set(qn('w:eastAsia'), u'Cambria')
run.font.color.rgb = RGBColor(0,0,0)

第一行的地方不填标题内容,因为我没有研究出来怎么修改他的大小和值,只能通过add_run的返回值来修改标题的内容。再运行的结果如下:
在这里插入图片描述注意到颜色也发生了变化,是因为我最后一行修改了字体的颜色。
完整代码

Doc = Document() 
Doc.styles['Normal'].font.name = u'宋体'
Doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
Doc.styles['Normal'].font.size = Pt(10.5)
Doc.styles['Normal'].font.color.rgb = RGBColor(0,0,0)
Head = Doc.add_heading("",level=1)# 这里不填标题内容
run  = Head.add_run("刚来csdn,这就是博客么,I了")
run.font.name=u'Cambria'
run.font.color.rgb = RGBColor(0,0,0)
run._element.rPr.rFonts.set(qn('w:eastAsia'), u'Cambria')
Doc.add_paragraph("Python ")
Doc.add_paragraph("Python 对word进行操作")
Doc.save("Python_word.docx")

附:字体大小参照这篇博客的对照表:
字号‘八号’对应磅值5
字号‘七号’对应磅值5.5
字号‘小六’对应磅值6.5
字号‘六号’对应磅值7.5
字号‘小五’对应磅值9
字号‘五号’对应磅值10.5
字号‘小四’对应磅值12
字号‘四号’对应磅值14
字号‘小三’对应磅值15
字号‘三号’对应磅值16
字号‘小二’对应磅值18
字号‘二号’对应磅值22
字号‘小一’对应磅值24
字号‘一号’对应磅值26
字号‘小初’对应磅值36
字号‘初号’对应磅值42

  • 50
    点赞
  • 139
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值