You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python或其他语言批量修改14000个Word文件字体?

批量修改14000个Word文件字体的实现方案

针对14000个Word文件的批量字体修改需求,以下是Python实现方案(兼容.docx和.doc格式),同时提供VBA备选方案,全程保障文件安全。

Python 处理 .docx 文件(无需安装Word)

依赖安装

pip install python-docx

实现代码

import os
from docx import Document
from docx.shared import Pt
from docx.oxml.ns import qn

def modify_docx_font(file_path, new_font_name='微软雅黑', new_font_size=10.5):
    try:
        doc = Document(file_path)
        # 修改所有段落文本的字体
        for para in doc.paragraphs:
            for run in para.runs:
                run.font.name = new_font_name
                # 适配中文字体
                run._element.rPr.rFonts.set(qn('w:eastAsia'), new_font_name)
                run.font.size = Pt(new_font_size)
        # 修改表格内的字体
        for table in doc.tables:
            for row in table.rows:
                for cell in row.cells:
                    for para in cell.paragraphs:
                        for run in para.runs:
                            run.font.name = new_font_name
                            run._element.rPr.rFonts.set(qn('w:eastAsia'), new_font_name)
                            run.font.size = Pt(new_font_size)
        # 修改内置样式(确保样式应用的文本同步生效)
        for style in doc.styles:
            if style.type == 1:  # 仅处理段落样式
                style.font.name = new_font_name
                style._element.rPr.rFonts.set(qn('w:eastAsia'), new_font_name)
                style.font.size = Pt(new_font_size)
        # 保存文件(建议先备份原文件,再覆盖)
        doc.save(file_path)
        print(f"✅ 处理完成: {file_path}")
    except Exception as e:
        print(f"❌ 处理失败 {file_path}: {str(e)}")

def batch_modify_docx(folder_path):
    # 遍历目标文件夹下所有docx文件
    for root, _, files in os.walk(folder_path):
        for file in files:
            if file.lower().endswith('.docx'):
                modify_docx_font(os.path.join(root, file))

if __name__ == "__main__":
    # 替换为你的Word文件存放路径
    target_folder = r'C:\Path\To\Your\WordFiles'
    batch_modify_docx(target_folder)

Python 处理 .doc 文件(需安装本地Word)

依赖安装

pip install pywin32

实现代码

import os
import win32com.client as win32
from win32com.client import constants

def modify_doc_font(file_path, new_font_name='微软雅黑', new_font_size=10.5):
    word_app = None
    try:
        # 启动Word后台进程
        word_app = win32.gencache.EnsureDispatch('Word.Application')
        word_app.Visible = False
        word_app.DisplayAlerts = constants.wdAlertsNone
        # 打开文档
        doc = word_app.Documents.Open(file_path)
        # 全选文档并设置字体
        doc.Content.Select()
        word_app.Selection.Font.Name = new_font_name
        word_app.Selection.Font.NameFarEast = new_font_name
        word_app.Selection.Font.Size = new_font_size
        # 修改所有内置样式
        for style in doc.Styles:
            if style.Type in (constants.wdStyleTypeParagraph, constants.wdStyleTypeCharacter):
                style.Font.Name = new_font_name
                style.Font.NameFarEast = new_font_name
                style.Font.Size = new_font_size
        # 保存并关闭文档
        doc.Save()
        doc.Close()
        print(f"✅ 处理完成: {file_path}")
    except Exception as e:
        print(f"❌ 处理失败 {file_path}: {str(e)}")
    finally:
        # 确保Word进程关闭
        if word_app:
            word_app.Quit()

def batch_modify_doc(folder_path):
    for root, _, files in os.walk(folder_path):
        for file in files:
            if file.lower().endswith('.doc'):
                modify_doc_font(os.path.join(root, file))

if __name__ == "__main__":
    target_folder = r'C:\Path\To\Your\WordFiles'
    batch_modify_doc(target_folder)

备选方案:VBA 脚本(直接在Word中运行)

打开Word,按下 Alt+F11 进入VBA编辑器,插入模块后粘贴以下代码:

Sub BatchModifyFonts()
    Dim folderPath As String
    Dim fileName As String
    Dim doc As Document
    Dim newFontName As String
    Dim newFontSize As Single
    
    ' 配置参数
    newFontName = "微软雅黑"
    newFontSize = 10.5
    folderPath = "C:\Path\To\Your\WordFiles"
    
    fileName = Dir(folderPath & "\*.doc*")
    Do While fileName <> ""
        Set doc = Documents.Open(folderPath & "\" & fileName)
        ' 修改全部内容字体
        doc.Content.Font.Name = newFontName
        doc.Content.Font.NameFarEast = newFontName
        doc.Content.Font.Size = newFontSize
        ' 修改所有样式
        Dim style As Style
        For Each style In doc.Styles
            If style.Type = wdStyleTypeParagraph Or style.Type = wdStyleTypeCharacter Then
                style.Font.Name = newFontName
                style.Font.NameFarEast = newFontName
                style.Font.Size = newFontSize
            End If
        Next style
        doc.Save
        doc.Close
        fileName = Dir()
    Loop
    MsgBox "批量处理完成!"
End Sub

关键注意事项(保障文件安全)

  • 强制备份:处理前务必将所有文件复制到备份文件夹,在备份文件上操作,原文件保留。
  • 分批处理:将14000个文件分成若干批次(如每批1000个),避免系统资源耗尽。
  • 日志记录:可将代码中的print输出改为写入日志文件,方便后续排查失败文件。
  • 字体兼容性:确保目标字体在本地系统中已安装,否则Word会自动替换为默认字体。
  • .doc文件注意:使用pywin32方案时,不要在处理过程中手动打开Word,避免进程冲突。

内容的提问来源于stack exchange,提问作者axonrydex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 09:45:25