【Python-办公自动化】批量修改文件夹内所有WORD文档格式
# 导入必要的库和函数
from docx import Document
from docx.oxml import OxmlElement
from docx.shared import Pt # 用于设定字体大小(磅值)
from docx.oxml.ns import qn # 用于在OpenXML中指定命名空间,以应用中文字体
# 定义函数来设置不同部分的字体格式
def F_title(run):
# 标题文字
run.font.size = Pt(22) # 设置文字大小为22磅
run.bold = False # 加粗
run.font.name = "方正小标宋简体" # 设置字体为“方正小标宋简体”
r = run._element.rPr.rFonts # 获取字体设置对象
r.set(qn("w:eastAsia"), "方正小标宋简体") # 单独设置中文字体为“方正小标宋_GBK”
def F_name_dept(run):
#姓名,部门,日期
run.font.size = Pt(17) #文字大小磅值
run.bold = False #加粗
run.font.name = "楷体" #字体
r = run._element.rPr.rFonts
r.set(qn("w:eastAsia"),"楷体") #字体
def F_main(run):
#正文的格式
run.font.size = Pt(17) #文字大小磅值
run.bold = False #加粗
run.font.name = "仿宋" #字体
r = run._element.rPr.rFonts
r.set(qn("w:eastAsia"),"仿宋") #字体
def F_title1(run):
#标题一的格式
run.font.size = Pt(17) #文字大小磅值
run.bold = False #加粗
run.font.name = "黑体" #字体
r = run._element.rPr.rFonts
r.set(qn("w:eastAsia"),"黑体") #字体
def F_title2(run):
#标题二的格式
run.font.size = Pt(17) #文字大小磅值
run.bold = True #加粗
run.font.name = "楷体" #字体
r = run._element.rPr.rFonts
r.set(qn("w:eastAsia"),"楷体") #字体
# 导入docx和os库
import docx, os
# 设置待处理的文件所在文件夹路径
path = r'C:\Users\Administrator\Desktop\审核所需数据1' # 注意:这里应该是一个具体的文件夹路径,如'C:\\path\\to\\folder'
files = [path + "\\" + i for i in os.listdir(path)] # 获取文件夹下的文件名,并拼接成完整路径
# 逐个处理文件
for file in files:
doc = docx.Document(file) # 加载Word文档
# 设置总标题的字体格式
for run in doc.paragraphs[0].runs:
F_title(run)
# 设置部门、姓名及日期的字体格式
for para in doc.paragraphs[1:3]:
for run in para.runs:
F_name_dept(run)
# 定义标题一和标题二的唯一特征字符串
title1 = ["一、", "二、", "三、", "四、", "五、", "六、", "七、", "八、", "九、", "十、"]
title2 = ["(一)", "(二)", "(三)", "(四)", "(五)", "(六)", "(七)", "(八)", "(九)", "(十)"]
# 遍历文档的其余段落,根据内容设置字体格式
for para in doc.paragraphs[3:]:
if any(i in para.text for i in title1): # 如果段落中包含标题一的特征字符串
for run in para.runs:
F_title1(run)
elif any(j in para.text for j in title2): # 如果段落中包含标题二的特征字符串
for run in para.runs:
F_title2(run)
else:
for run in para.runs: # 否则,应用正文的字体格式
F_main(run)
# 保存处理后的文档到指定文件夹,文件名保持不变
doc.save('C:\\Users\\Administrator\\Desktop\\审核所需数据1\\{}'.format(file.split("\\")[1]+'.docx')) # 注意:这里假设'已处理文件'是一个已存在的文件夹