pywin32/win32com批量转格式doc/docx/pdf/html/python-docx批量修改Word文档内容和格式

请看代码块,及里面的注释

import re
import os
from win32com.client import Dispatch
from docx import Document as Doc
from docx.enum.style import WD_STYLE_TYPE
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import Pt
from docx.oxml.ns import qn


def add_style(docdir):
    docx = Doc(docdir)
    t_s = docx.styles.add_style('t_s', WD_STYLE_TYPE.PARAGRAPH) #样式名字
    t_s.font.size = 203200 #字体大小
    t_s.font.name = '方正楷体简体' #字体名字
    t_s.font.bold = True #是否加粗
    t_s.paragraph_format.line_spacing = Pt(18) #行高
    t_s.paragraph_format.left_indent = None #是否缩进
    t_s.paragraph_format.space_before = None #段前空间
    t_s.paragraph_format.space_after = 76200 #段后空间
    t_s.paragraph_format.first_line_indent = None #是否首行缩进
    t_s.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #对齐方式,居中对齐CENTER。其他:LEFT, RIGHT, JUSTIFY
    docx.styles['t_s']._element.rPr.rFonts.set(qn('w:eastAsia'), '方正楷体简体') #非常重要!样式作用范围:东亚(eastAsia)
    return docx


def doc2docx(s_dir):
    App = Dispatch("Word.Application")
    App.Visible = False
    doc = App.Documents.Open(s_dir)
    s_dir += 'x'
    doc.SaveAs(s_dir, 12) # 12就是docx, 详情查看下个代码块


def main():
    filedir = "C:/Users/Desktop/batch_word/msg.doc"
    #如果发现 doc 格式的文档,需要先转格式到 docx 才能操作,记得库名:python-docx。
    if re.search('doc$', filedir): # 当然你也可以用:.endswith('.doc'),我就喜欢 re 你怎么滴吧
        if not os.path.exists(filedir + 'x'): # 检查同名的.docx文件是否存在
            doc2docx(filedir) # 如果不存在,转格式,并保存 docx 文档
            filedir += x # 改路径
	
	# 打开文档,并在文档的样式列表里添加一个自定义样式,不懂什么是 word 样式列表的及其作用的,自己去查查吧
    docx = add_style(filedir) # 添加样式 “t_s” 到 docx 的样式列表里, 名字随意(不能和自带样式名冲突),格式自己定

    for para in docx.paragraphs:
        if '第一系列' in para.text: # 如果此段落包含 “第一系列”
            para.text = para.text.replace('一', '三') # 把第一系列改为第三系列
            para.style = 't_s'  # 应用样式 t_s 到此段
        savedir = "C:/Users/Desktop/batch_word/msg_modi.docx"
        docx.save(savedir) # 保存


main()

转格式问题:

open(r'c:\text','r')
wdFormatDocument = 0
wdFormatDocument97 = 0
wdFormatDocumentDefault = 16
wdFormatDOSText = 4    # .txt
wdFormatDOSTextLineBreaks = 5
wdFormatEncodedText = 7
wdFormatFilteredHTML = 10 # .html
wdFormatFlatXML = 19
wdFormatFlatXMLMacroEnabled = 20
wdFormatFlatXMLTemplate = 21
wdFormatFlatXMLTemplateMacroEnabled = 22
wdFormatHTML = 8
wdFormatPDF = 17 # .pdf
wdFormatRTF = 6 # .rtf
wdFormatTemplate = 1
wdFormatTemplate97 = 1
wdFormatText = 2
wdFormatTextLineBreaks = 3
wdFormatUnicodeText = 7 # .txt
wdFormatWebArchive = 9
wdFormatXML = 11 # .doc
wdFormatXMLDocument = 12  # .docx
wdFormatXMLDocumentMacroEnabled = 13
wdFormatXMLTemplate = 14
wdFormatXMLTemplateMacroEnabled = 15
wdFormatXPS = 18
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值