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

如何使用openpyxl将多个多工作表xlsx的单元格样式复制到多个输出xlsx文件

问题根因分析
  • 输出工作表对象逻辑错误:遍历输出目录文件时会反复覆盖wb2、ws2变量,最终只会保留输出目录最后一个Excel文件的激活工作表作为写入目标,且最终保存时固定写为output.xlsx,和你遍历输出文件的逻辑完全不匹配
  • 单元格写入坐标未做偏移:直接复用输入文件单元格的原生坐标(比如输入表A1就写到输出表A1),所有输入文件的内容都会从输出表的首行首列开始覆盖,自然只会保留最后一次写入的内容
  • 代码冗余:ws2cell.font = copy(c.font)重复写了两次,循环遍历列表时用索引计数的方式无意义,还容易引发索引错位问题
合并场景修正代码

如果你当前需求是把所有输入文件夹的Excel内容按顺序合并到同一个输出文件中,可以用以下修正后代码:

import os
from openpyxl import load_workbook
from copy import copy

path1 = "你的输入文件夹路径"
path2 = "你的输出文件夹路径"

# 初始化输出工作簿和工作表,不需要模板可以直接用Workbook()新建
wb2 = load_workbook("你的输出模板路径.xlsx") 
ws2 = wb2.active
# 记录当前输出表的下一个空行偏移量,默认从第1行开始写
current_row_offset = 0

input_file_list = [x for x in os.listdir(path1) if x.endswith(".xlsx")]

for input_file in input_file_list:
    wb1 = load_workbook(os.path.join(path1, input_file))
    # 遍历输入文件所有工作表
    for sheet_name in wb1.sheetnames:
        ws1 = wb1[sheet_name]
        # 遍历输入表每一行
        for row_idx, row in enumerate(ws1.iter_rows(), start=1):
            # 遍历行内每一个单元格
            for col_idx, cell in enumerate(row, start=1):
                # 计算输出表的目标坐标:行号=当前偏移量+输入表行号,列号和输入表一致
                target_cell = ws2.cell(row=current_row_offset + row_idx, column=col_idx)
                # 复制值
                target_cell.value = cell.value
                # 复制样式
                if cell.has_style:
                    target_cell.font = copy(cell.font)
                    target_cell.border = copy(cell.border)
                    target_cell.fill = copy(cell.fill)
                    target_cell.number_format = copy(cell.number_format)
                    target_cell.alignment = copy(cell.alignment)
        # 单个输入表写完后,更新偏移量到下一个空行
        current_row_offset += ws1.max_row
    wb1.close()

# 所有输入文件处理完后统一保存
wb2.save(os.path.join(path2, "output.xlsx"))
wb2.close()
拆分场景适配说明

如果你的需求是把输入文件的内容按规则拆分到多个输出文件,只需要调整匹配逻辑:

  • 先把所有输出文件的工作簿对象预加载存为字典,不要遍历的时候反复覆盖
  • 根据拆分规则匹配对应的输出工作表,计算对应写入坐标后再写入即可
  • 如果需要保留输入文件的多工作表结构,给输出工作簿新建对应名称的工作表再写入即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:45:06