Python-docx 实现整体修改或者部分修改文字的大小和字体类型

 更新时间:2021年03月08日 09:14:58   作者:Leeoo_lyq  
这篇文章主要介绍了Python-docx 实现整体修改或者部分修改文字的大小和字体类型,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

Python中可以用docx来生成word文档,docx中可以自定义文字的大小和字体等。

其中要整体修改文字的字体大小和字体,可以用以下方法:

newfile = docx.Document()
newfile.styles['Normal'].font.name = 'Times New Roman'
newfile.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')

设置字体的两句一定要一起用才能起作用,其中

newfile.styles['Normal'].font.name = 'Times New Roman' 是用来设置当文字是西文时的字体,

newfile.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体') 是用来设置当文字是中文时的字体。

有点类似Word中的

当只要设置一部分文字的字体,即不要整个文档的字体都一样时,可以用以下方法:

import docx
from docx.oxml.ns import qn
from docx.shared import Pt 
 
newfile = docx.Document()
p1 = newfile.add_paragraph()
text1 = p1.add_run("第一段文字是中文;The first paragraph is in English")
p2 = newfile.add_paragraph()
text2 = p2.add_run("第二段文字是中文;The second paragraph is in English")
# 分别控制每个段落的字体
text1.font.size = Pt(15)                # 字体大小
text1.bold = True                    # 字体是否加粗
text1.font.name = 'Times New Roman'           # 控制是西文时的字体
text1.element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')  # 控制是中文时的字体
text2.font.size = Pt(10)
text2.bold = False # 字体是否加粗
text2.font.name = 'Times New Roman'
text2.element.rPr.rFonts.set(qn('w:eastAsia'), '黑体')
newfile.save("newdocx.docx")

上面代码是向文档写入了两段文字,第一段中的中文是“宋体”的,而第二段中的中文是“黑体”的。

补充:python 使用 python-docx 调整 Word 文档样式

修改文字字体样式

from docx import Document
from docx.shared import Pt #设置像素、缩进等
from docx.shared import RGBColor #设置字体颜色
from docx.oxml.ns import qn
doc = Document(r"../wordDemo/表彰大会通知.docx")
for paragraph in doc.paragraphs:
  for run in paragraph.runs:
    run.font.bold = True
    run.font.italic = True
    run.font.underline = True
    run.font.strike = True
    run.font.shadow = True
    run.font.size = Pt(18)
    run.font.color.rgb = RGBColor(255,0,255)
    run.font.name = "黑体"
    # 设置像黑体这样的中文字体,必须添加下面 2 行代码
    r = run._element.rPr.rFonts
    r.set(qn("w:eastAsia"),"黑体")
doc.save(r"../wordDemo/表彰大会通知.docx")

效果展示

修改段落样式

对齐样式

from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH #设置对象居中、对齐等。
doc = Document(r"../wordDemo/表彰大会通知.docx")
print(doc.paragraphs[1].text)
doc.paragraphs[1].alignment = WD_ALIGN_PARAGRAPH.CENTER
# 这里设置的是居中对齐
doc.save(r"../wordDemo/表彰大会通知.docx")

效果展示

行间距调整

from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
doc = Document(r"../wordDemo/表彰大会通知.docx")
for paragraph in doc.paragraphs:
  paragraph.paragraph_format.line_spacing = 5.0
doc.save(r"../wordDemo/表彰大会通知.docx")

效果展示

段前与段后间距

from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Pt
doc = Document(r"../wordDemo/test.docx")
for paragraph in doc.paragraphs:
  paragraph.paragraph_format.space_before = Pt(12)
  # 段前
  
  paragraph.paragraph_format.space_after = Pt(10) 
  # 段后
  
  # Pt(12) 表示12磅
doc.save(r"../wordDemo/test.docx")

效果展示

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • 浅谈Python2.6和Python3.0中八进制数字表示的区别

    浅谈Python2.6和Python3.0中八进制数字表示的区别

    下面小编就为大家带来一篇浅谈Python2.6和Python3.0中八进制数字表示的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 在Python的Django框架下使用django-tagging的教程

    在Python的Django框架下使用django-tagging的教程

    这篇文章主要介绍了在Python的Django框架下使用django-tagging的教程,针对网络编程中的tag部分功能提供帮助,需要的朋友可以参考下
    2015-05-05
  • Python实现批量翻译CAD图纸

    Python实现批量翻译CAD图纸

    这篇文章主要为大家详细介绍了如何通过Python实现批量翻译CAD图纸,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以学习一下
    2023-12-12
  • pytorch 实现冻结部分参数训练另一部分

    pytorch 实现冻结部分参数训练另一部分

    这篇文章主要介绍了pytorch 实现冻结部分参数训练另一部分,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Pytest单元测试框架如何实现参数化

    Pytest单元测试框架如何实现参数化

    这篇文章主要介绍了Pytest单元测试框架如何实现参数化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Pandas读取excel合并单元格的正确方式(openpyxl合并单元格拆分并填充内容)

    Pandas读取excel合并单元格的正确方式(openpyxl合并单元格拆分并填充内容)

    Excel文件中可能包含合并单元格的数据,下面这篇文章主要给大家介绍了关于Pandas读取excel合并单元格的正确方式,主要介绍的openpyxl合并单元格拆分并填充内容,需要的朋友可以参考下
    2023-06-06
  • python热力图实现的完整实例

    python热力图实现的完整实例

    热力图的使用场景有描述数据在空间的密集程度,常见有城市热力图、区域热力图,描述多个变量之间相关性高低程度,这篇文章主要给大家介绍了关于python热力图实现的相关资料,需要的朋友可以参考下
    2022-06-06
  • python3 深浅copy对比详解

    python3 深浅copy对比详解

    这篇文章主要介绍了python3 深浅copy对比详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 如何解决Visdom全蓝,不显示内容问题

    如何解决Visdom全蓝,不显示内容问题

    这篇文章主要介绍了如何解决Visdom全蓝,不显示内容问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • django使用admin站点上传图片的实例

    django使用admin站点上传图片的实例

    今天小编就为大家分享一篇django使用admin站点上传图片的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07

最新评论