请看代码块,及里面的注释
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