您的位置:首页 > 财经 > 产业 > python利用openpyxl合并excel一个或多个工作薄,每个工作薄可含一个或多个工作表

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

2024/12/23 6:35:20 来源:https://blog.csdn.net/qq_38030771/article/details/140005595  浏览:    关键词:python利用openpyxl合并excel一个或多个工作薄,每个工作薄可含一个或多个工作表

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

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

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

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

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

import os
import openpyxl
from openpyxl import load_workbook
from openpyxl.utils import get_column_letterdef 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.activei=0# 遍历所有Excel文件for file in excel_files:# 打开当前Excel文件workbook = openpyxl.load_workbook(os.path.join(input_folder, file))i= i+1print("序列",'{0:>5}'.format(i),file)sheet_names = workbook.sheetnamesfor sheet_name in sheet_names:sheet = workbook[sheet_name]# 获取当前工作表的最大行和列max_row = sheet.max_rowmax_col = sheet.max_columnfor row in sheet.iter_rows(values_only=True):a = list(row)a.insert(0,file+'-'+sheet_name)a = tuple(a)row = amerged_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')

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com