python docx修改word文档格式

修改word文档格式,包括修改目录字体字号间距,修改一级标题字体字号间距,二级标题字体字号间距。。。。正文字体字号间距,表格中的文字的字体字号间距,以图或表开头的图名称和表名称的字体字号间距.

word中包含封面的话输入1就不遍历第一个表格,不修改封面字体,没封面就遍历所有的表格,修改所有表格的字体

修改论文格式还是比较好用的,尤其是图片和表格比较多的文档

from docx import Document
from docx.shared import Inches
import  os,re
from docx.shared import Pt,RGBColor
from docx.oxml.ns import qn
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Inches
from docx.shared import Pt, Cm, Inches

def zhengwen():

    for paragraph in document.paragraphs:

        if re.match('^Heading 1',paragraph.style.name):
            

            paragraph.paragraph_format.line_spacing = 1.5
            paragraph.paragraph_format.space_before = Pt(5)
            paragraph.paragraph_format.space_after = Pt(5)
            
            paragraph.paragraph_format.first_line_indent = Cm(0)
            paragraph.paragraph_format.left_indent = Cm(0)
            

            

            for run in paragraph.runs:
                run.font.size = Pt(16)
                run.font.name = u'黑体'
                run._element.rPr.rFonts.set(qn('w:eastAsia'), u'黑体')
                run.font.bold = True

        elif re.match('^Heading 2',paragraph.style.name):
 
            paragraph.paragraph_format.line_spacing = 1.5
            paragraph.paragraph_format.space_before = Pt(5)
            paragraph.paragraph_format.space_after = Pt(5)
            paragraph.paragraph_format.first_line_indent = Cm(0)
            paragraph.paragraph_format.left_indent = Cm(0)
            for run in paragraph.runs:
                run.font.size = Pt(14)
                run.font.name = u'黑体'
                run._element.rPr.rFonts.set(qn('w:eastAsia'), u'黑体')
                run.font.bold = True
        elif re.match('^Heading 3',paragraph.style.name):

            paragraph.paragraph_format.line_spacing = 1.5
            paragraph.paragraph_format.space_before = Pt(5)
            paragraph.paragraph_format.space_after = Pt(5)
            paragraph.paragraph_format.first_line_indent = Cm(0)
            paragraph.paragraph_format.left_indent = Cm(0)
            for run in paragraph.runs:
                run.font.size = Pt(12)
                run.font.name = u'黑体'
                run._element.rPr.rFonts.set(qn('w:eastAsia'), u'黑体')
                run.font.bold = True
        elif re.match('^Heading 4',paragraph.style.name):

            paragraph.paragraph_format.line_spacing = 1.5
            paragraph.paragraph_format.space_before = Pt(5)
            paragraph.paragraph_format.space_after = Pt(5)
            paragraph.paragraph_format.first_line_indent = Cm(0)
            paragraph.paragraph_format.left_indent = Cm(0)
            for run in paragraph.runs:
                run.font.size = Pt(12)
                run.font.name = u'黑体'
                run._element.rPr.rFonts.set(qn('w:eastAsia'), u'黑体')
                run.font.bold = True

        elif re.match('^Heading 5',paragraph.style.name):
            paragraph.paragraph_format.line_spacing = 1.5
            paragraph.paragraph_format.space_before = Pt(5)
            paragraph.paragraph_format.space_after = Pt(5)
            paragraph.paragraph_format.first_line_indent = Cm(0)
            paragraph.paragraph_format.left_indent = Cm(0)
            for run in paragraph.runs:
                run.font.size = Pt(12)
                run.font.name = u'黑体'
                run._element.rPr.rFonts.set(qn('w:eastAsia'), u'黑体')
                run.font.bold = True

        elif re.match('^Heading 6',paragraph.style.name):
            paragraph.paragraph_format.line_spacing = 1.5
            paragraph.paragraph_format.space_before = Pt(5)
            paragraph.paragraph_format.space_after = Pt(5)
            paragraph.paragraph_format.first_line_indent = Cm(0)
            paragraph.paragraph_format.left_indent = Cm(0)
            for run in paragraph.runs:
                run.font.size = Pt(12)
                run.font.name = u'黑体'
                run._element.rPr.rFonts.set(qn('w:eastAsia'), u'黑体')
                run.font.bold = True

        elif re.match('^Heading 7',paragraph.style.name):
            paragraph.paragraph_format.line_spacing = 1.5
            paragraph.paragraph_format.space_before = Pt(5)
            paragraph.paragraph_format.space_after = Pt(5)
            paragraph.paragraph_format.first_line_indent = Cm(0)
            paragraph.paragraph_format.left_indent = Cm(0)
            for run in paragraph.runs:
                run.font.size = Pt(12)
                run.font.name = u'黑体'
                run._element.rPr.rFonts.set(qn('w:eastAsia'), u'黑体')
                run.font.bold = True
        
#目录
        elif re.match('^toc',paragraph.style.name):

            for run in paragraph.runs:
                run.font.size = Pt(10.5)
                run.font.name = u'宋体'
                run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
                run.font.italic = False
                run.font.bold = False

#图 表
        else:
            if re.match("(表)",paragraph.text):
                print(paragraph.text)
                paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
                for run in paragraph.runs:
                
                    run.font.size = Pt(9)
                    run.font.name = u'黑体'
                    run._element.rPr.rFonts.set(qn('w:eastAsia'), u'黑体')
                
            elif re.match("(图)",paragraph.text):
                print(paragraph.text)
                paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
                for run in paragraph.runs:
                
                    run.font.size = Pt(9)
                    run.font.name = u'黑体'
                    run._element.rPr.rFonts.set(qn('w:eastAsia'), u'黑体')
#正文
            else:
                paragraph.paragraph_format.line_spacing = 1.5
            
                for run in paragraph.runs:
                    run.font.size = Pt(10.5)
                    run.font.name = u'宋体'
                    run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
                    run.font.italic = False
                    run.font.bold = False


            
        
def biaoge(a):
    tables=document.tables
    b=int(a)
    for tb in document.tables[b:]:
        for row in tb.rows:            
            for cell in row.cells:
                for par in cell.paragraphs:
                    for run in par.runs:                    
                        run.font.size = Pt(9)

                        run.font.name ='宋体'  
                        run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')






if __name__ == "__main__":
    print("输入文件路径")
    path = input()
    print("有封面输入1没封面输入0")
    a = input()

    #'C:\\Users\lilyh\\Desktop\\文件.docx'
    document = Document(path)
    zhengwen()
    biaoge(a)

    document.save('修改后的文件.docx')
    print("输入任意结束")
    d = input()

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值