【Python-办公自动化】批量修改文件夹内所有WORD文档格式

时间:2025-04-03 09:01:05
# 导入必要的库和函数 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')) # 注意:这里假设'已处理文件'是一个已存在的文件夹