当前位置 博文首页 > Python-docx 实现整体修改或者部分修改文字的大小和字体类型

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

    作者:Leeoo_lyq 时间:2021-07-16 18:47

    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")
    

    效果展示

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

    jsjbwy