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')
相关推荐
荣码8 小时前
LangGraph多Agent协作:3个Agent干活比1个强,但我踩了4个坑
java·python
用户8356290780511 天前
Python 操作 PDF 附件:添加、查看与管理指南
后端·python
宇宙之一粟1 天前
乐企版式文件生成平台
java·后端·python
学测绘的小杨2 天前
CompassFusion:一个从 GNSS 到 GNSS/INS 组合导航的独立工程包
python
zzzzzz3102 天前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐2 天前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
兵慌码乱3 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot3 天前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海3 天前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱3 天前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django