实例07—3秒批量合并大量excel文件,每个文件包括多个工作表

模拟场景需求:

由于工作需要,学校通过统一模板,发到各年级一份班级花名册,每一个年级的花名册都是统一有规律的,规律见图:

python处理excel表格合并同类项(python处理Excel实战进阶篇day07)(1)

单一表格示意图

excel文件一共5个,分别从一到五年级(操作需要可以是50个,500个……),把这么多的文件合并到一个excel文件用于统计,工作量太大了,手动去粘贴,你要加班几个小时呀,计算机最会做的就是重复循环做事情了,这时Python处理Excel文件的模块openpyxl,看我怎么样用它搞定我们的“3秒合并大量excel文件”。

1、用到的知识点:

Python的循环,内置os模块,列表及操作方法,wb对象基本操作包括创建和保存,ws的操作遍历,cell单元格的读取和写入等。

2、用到的文件:

各年级花名册文件,要求是xlsx扩展名的,非隐私数据(已经脱敏处理,人为更改)

python处理excel表格合并同类项(python处理Excel实战进阶篇day07)(2)

各年级花名册

如需要请下载,通过阿里云盘分享,链接如下:https://www.aliyundrive.com/s/UEYTzKpjsxo

3、操作步骤思维导图

python处理excel表格合并同类项(python处理Excel实战进阶篇day07)(3)

合并文件思维导图

4、代码操作编写截图:

python处理excel表格合并同类项(python处理Excel实战进阶篇day07)(4)

合并大量excel文件1

python处理excel表格合并同类项(python处理Excel实战进阶篇day07)(5)

合并大量excel文件2

give your the code:

from openpyxl import Workbook,load_workbook from openpyxl.styles import Alignment import os #获取工作目录下的excel文件 files = os.listdir('.') files = filter(lambda filename:filename[-5:]=='.xlsx',files) #过滤文件只保留.xlsx文件类型 files = list(files) # 创建合并后的工作簿和工作表 new_wb = Workbook() new_ws = new_wb.active # 初始化工作表,首行合并居中,第二行加入标题 new_ws.merge_cells('A1:I1') new_ws['A1'] = '全校学生花名册' cell = new_ws['A1'].alignment = Alignment(horizontal='center',vertical='center') title = ['序号','班级','姓名','性别','出生年月','住址','入学方式','外学区','电话'] new_ws.append(title) # 遍历整个过程 for file in files: # 遍历文件列表 wb = load_workbook(file) # 加载文件到wb对象 for ws in wb: # 遍历工作簿对象的所有工作表 for row in ws.iter_rows(min_row=3): # 遍历每个工作表的行,从第三行开始,1、2行都是标题 tmp = [] # 建立临时变量储存读取的每个单元的值 for cell in row: # 遍历每行单元格 tmp.append(cell.value) # 把每行的值加入临时列表,用于写入新的工作表 new_ws.append(tmp) # 把获取的单行数据写入新工作表 # 保存合并文件 new_wb.save('all.xlsx')

用Python 分秒完成任务,和加班说再见^_^

python处理excel表格合并同类项(python处理Excel实战进阶篇day07)(6)

结果

网友们可以结合本例子,批量合并超多统一格式的excel文件,要举一反三,灵活运用,再次说,不理解的可以参考入门视频合集<python办公自动化openpyxl处理excel(基础篇)>

,