Excel批量统一样式怎么做,3种高效方法详解,断网也能用

0 阅读5分钟

大家好,这里是办公智能体广场,在日常办公中,我们经常会遇到一批 Excel 表格内容已经整理完成,但格式杂乱、样式不统一的情况。人工逐个套用模板不仅耗时,还容易出错。

本文将介绍 Excel 批量套用格式模板的常见方法,并重点说明如何借助本地工具,把模板样式一键应用到目标表格中,快速完成标准化输出。

一、需求分析

有一批Excel文件需要批量调整成如下复杂的格式:

  • 纸张大小 :A4
  • 打印方向 :横向
  • 缩放方式 :宽度 1 页,高度自动分页
  • 打印区域 : A1:H31
  • 打印标题行 :第 1 行
  • 页边距 :左 0.3 英寸,右 0.3 英寸,上 0.5 英寸,下 0.5 英寸
  • 水平居中打印 :开启
  • 页眉 : 打印格式模板
  • 页脚 :左侧打印时间,右侧页码
  • 冻结窗格 :冻结第 1 行
  • 列宽 :A-H 列已预设
  • 行高 :第 1 行为表头行高,其余为正文行高
  • 表头样式 :加粗、居中、浅蓝底色、黑色边框
  • 正文样式 :微软雅黑 10 号、自动换行、垂直居中、浅灰边框

这要是手动调整都要调整很久,况且如果还有100多个excel都需要这么调整,那简直要崩溃!!!今天我将介绍几种实现方案,完美解决这个问题。

二、实现方案一:小白上手

先给大家介绍两种零基础小白也能轻松上手的方案:

  • 离线断网的模板套用法。
  • Excel AI自动化的提示词描述法。

1.1 离线模板方案

这个方案可以断网使用,但是先需要根据样式的需求设置好一个模板excel, 打印设置我已经设置好了, 制作好的模板如下:

打开鲸闲办公智能体广场,找到 “样式修改器”,如图:

获取: 宫中&浩气: “老罗软件”。 然后将待调整的excel文件和模板文件输入,点击 “执行” 就可以了,如图:

这个不会改变excel的原始数据,只会根据模板文件调整样式,请放心使用。

1.2 Excel AI自动化方案

这个不需要自己做模板,是极其懒惰的一种方案,打开鲸闲办公智能体广场,找到 “Excel自动化”,如图:

然后将输入文件和提示词输入就可以了,如图:

智能体会自动规划任务完成所有的任务,这就是AI的强大性。

三、实现方案二:Python脚本

用 Python 来批量处理 Excel,其实也是个很不错的选择,尤其适合那些经常要统一表格样式、批量套用打印格式的朋友。

优势:

  • 可以批量处理大量 Excel 文件,效率很高
  • 能把打印设置、页眉页脚、冻结窗格、行高列宽、单元格样式统一套用
  • 逻辑可定制,后续想改规则也比较方便
  • 免费开源,无需额外购买软件
  • 支持断网运行,数据始终保存在本地,更安全

劣势:

  • 需要一定的 Python 基础
  • 第一次使用需要安装依赖库
  • 如果格式要求非常复杂,脚本调试会花一些时间

这里我给大家分享一个简单的 Python 脚本,可以把模板 Excel 的格式批量应用到目标 Excel 文件中:

import os
from copy import copy
from openpyxl import load_workbook

# 模板 Excel 路径
template_path = r"path\to\your\template.xlsx"

# 待处理 Excel 文件夹
input_folder = r"path\to\your\excel_files"

# 输出文件夹
output_folder = r"path\to\your\output\folder"

# 如果输出文件夹不存在则创建
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 读取模板工作簿
template_wb = load_workbook(template_path)
template_ws = template_wb.active


def copy_page_setup(src_ws, dst_ws):
    """复制页面设置、打印设置、页眉页脚、冻结窗格"""
    dst_ws.freeze_panes = src_ws.freeze_panes
    dst_ws.print_area = src_ws.print_area
    dst_ws.print_title_rows = src_ws.print_title_rows
    dst_ws.print_title_cols = src_ws.print_title_cols

    dst_ws.page_setup.paperSize = src_ws.page_setup.paperSize
    dst_ws.page_setup.orientation = src_ws.page_setup.orientation
    dst_ws.page_setup.fitToWidth = src_ws.page_setup.fitToWidth
    dst_ws.page_setup.fitToHeight = src_ws.page_setup.fitToHeight
    dst_ws.page_setup.scale = src_ws.page_setup.scale

    dst_ws.page_margins.left = src_ws.page_margins.left
    dst_ws.page_margins.right = src_ws.page_margins.right
    dst_ws.page_margins.top = src_ws.page_margins.top
    dst_ws.page_margins.bottom = src_ws.page_margins.bottom
    dst_ws.page_margins.header = src_ws.page_margins.header
    dst_ws.page_margins.footer = src_ws.page_margins.footer

    dst_ws.print_options.horizontalCentered = src_ws.print_options.horizontalCentered
    dst_ws.print_options.verticalCentered = src_ws.print_options.verticalCentered

    dst_ws.oddHeader.left.text = src_ws.oddHeader.left.text
    dst_ws.oddHeader.center.text = src_ws.oddHeader.center.text
    dst_ws.oddHeader.right.text = src_ws.oddHeader.right.text

    dst_ws.oddFooter.left.text = src_ws.oddFooter.left.text
    dst_ws.oddFooter.center.text = src_ws.oddFooter.center.text
    dst_ws.oddFooter.right.text = src_ws.oddFooter.right.text


def copy_dimensions(src_ws, dst_ws):
    """复制列宽和行高"""
    for col_letter, src_dim in src_ws.column_dimensions.items():
        dst_dim = dst_ws.column_dimensions[col_letter]
        dst_dim.width = src_dim.width
        dst_dim.hidden = src_dim.hidden
        dst_dim.bestFit = src_dim.bestFit
        dst_dim.outlineLevel = src_dim.outlineLevel
        dst_dim.collapsed = src_dim.collapsed

    for row_index, src_dim in src_ws.row_dimensions.items():
        dst_dim = dst_ws.row_dimensions[row_index]
        dst_dim.height = src_dim.height
        dst_dim.hidden = src_dim.hidden
        dst_dim.outlineLevel = src_dim.outlineLevel
        dst_dim.collapsed = src_dim.collapsed


def copy_cell_styles(src_ws, dst_ws):
    """复制单元格样式,不覆盖目标单元格原始数据"""
    for row in src_ws.iter_rows(
        min_row=1,
        max_row=src_ws.max_row,
        min_col=1,
        max_col=src_ws.max_column
    ):
        for src_cell in row:
            dst_cell = dst_ws[src_cell.coordinate]

            if src_cell.has_style:
                dst_cell._style = copy(src_cell._style)

            if src_cell.number_format:
                dst_cell.number_format = src_cell.number_format

            if src_cell.alignment:
                dst_cell.alignment = copy(src_cell.alignment)

            if src_cell.font:
                dst_cell.font = copy(src_cell.font)

            if src_cell.fill:
                dst_cell.fill = copy(src_cell.fill)

            if src_cell.border:
                dst_cell.border = copy(src_cell.border)

            if src_cell.protection:
                dst_cell.protection = copy(src_cell.protection)


# 获取文件夹中所有 Excel 文件
excel_files = [
    f for f in os.listdir(input_folder)
    if f.lower().endswith(".xlsx") and not f.startswith("~$")
]

# 遍历所有 Excel 文件并套用模板格式
for file_name in excel_files:
    try:
        input_path = os.path.join(input_folder, file_name)

        # 跳过模板文件自身
        if os.path.abspath(input_path) == os.path.abspath(template_path):
            continue

        output_path = os.path.join(output_folder, f"formatted_{file_name}")

        wb = load_workbook(input_path)
        ws = wb.active

        # 套用模板中的页面设置、列宽行高和单元格样式
        copy_page_setup(template_ws, ws)
        copy_dimensions(template_ws, ws)
        copy_cell_styles(template_ws, ws)

        wb.save(output_path)
        print(f"已处理:{file_name}")

    except Exception as e:
        print(f"处理失败:{file_name},错误:{e}")

print("所有文件处理完成!")

使用时,先准备一个已设置好格式的模板 Excel,再将待处理文件放入同一文件夹,修改脚本中的模板路径、输入路径和输出路径后运行,即可批量生成格式统一的新文件。

脚本不会修改原始文件,只会在输出目录生成新的 Excel,适合批量统一报表、台账、明细表格式。

不过,Python 脚本更适合有一定编程基础的用户;如果只是偶尔处理,或希望操作更省心,那么前面的离线模板方案和 Excel AI 自动化方案会更方便。

四、总结

面对大量 Excel 格式统一的需求,手动逐个调整不仅效率低,还很容易出错。无论是离线模板套用、Excel AI 自动化,还是 Python 脚本,本质上都是用工具替代重复劳动。想省心省事,可以直接用离线模板方案;想通过文字描述需求完成格式整理,可以用 Excel AI 自动化;如果需要更强的批量处理和自定义能力,也可以选择 Python 脚本。选对方法之后,原本繁琐的格式整理工作,就能更快、更规范地完成。