python利用openpyxl合并excel一个或多个工作薄,每个工作薄可含一个或多个工作表

办公中经常会遇到合并excel的情况,人工挨个复制很烦还容易出错,所以就想到了python和openpyxl。参考了几个大模型给出的代码,发现没那么难,整理后得出了本文的代码。本文代码可合并excel一个或多个工作薄,每个工作薄可含一个或多个工作表。

将需要合并的excel文档全部放在一个文件夹,以下代码保存.py文件后放在此文件夹。无需更改任何代码,直接运行。代码运行结束后会在文件夹中生成一个名为merged_file.xlsx的excel文档,这个文档就是所有工作簿所有工作表合并后的文档。合并后的文档,即merged_file.xlsx,第一列为每一行数据对应的工作薄和工作表的名字。

openpyxl需要升级为最新版。升级方法如下:

徽标键+R呼出运行窗口;输入cmd,呼出命令行窗口,运行命令pip install --upgrade openpyxl

本文持续更新,如有其他需求可在评论区留言。

python 复制代码
import os
import openpyxl
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter

def merge_excel_files(input_folder, output_file):
    # 获取输入文件夹中的所有Excel文件
    excel_files = [f for f in os.listdir(input_folder) if f.endswith('.xlsx') or f.endswith('.xls')]
    print(excel_files)
    # 创建一个新的工作簿用于存储合并后的数据
    merged_workbook = openpyxl.Workbook()
    merged_sheet = merged_workbook.active
    i=0
    # 遍历所有Excel文件
    for file in excel_files:
        # 打开当前Excel文件
        workbook = openpyxl.load_workbook(os.path.join(input_folder, file))
        i= i+1
        print("序列",'{0:>5}'.format(i),file)
        sheet_names = workbook.sheetnames
        for sheet_name in sheet_names:
            sheet = workbook[sheet_name]
            # 获取当前工作表的最大行和列
            max_row = sheet.max_row
            max_col = sheet.max_column
            for row in sheet.iter_rows(values_only=True):
                a = list(row)
                a.insert(0,file+'-'+sheet_name)
                a = tuple(a)
                row = a
                merged_sheet.append(row)
        # 将当前工作表的数据复制到合并后的工作表中
        
##        for row in range(1, max_row + 1):
##            for col in range(1, max_col + 1):
##                cell = sheet.cell(row=row, column=col)
##                merged_sheet.cell(row=row, column=col).value = cell.value
##
    # 保存合并后的工作簿
    merged_workbook.save(output_file)

# 使用示例
input_folder = os.getcwd()
output_file = 'merged_file.xlsx'
merge_excel_files(input_folder, output_file)

print('ok')
相关推荐
默_笙2 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
qq_426003962 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
长沙三为智能科技2 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读2 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
只睡四小时2 天前
Canvas 弹道联机实战:700 行 + 固定时间步长
python·websocket·html5·游戏开发·canvas
C语言小火车2 天前
C/C++ 为什么需要编译器?
开发语言·c++
奇思妙想聪明勤奋的小羊2 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
lpfasd1232 天前
2026年第38周GitHub趋势周报
python·科技·github