python处理excel表格合并同类项(python处理Excel实战进阶篇day07)
模拟场景需求:
由于工作需要,学校通过统一模板,发到各年级一份班级花名册,每一个年级的花名册都是统一有规律的,规律见图:
单一表格示意图
excel文件一共5个,分别从一到五年级(操作需要可以是50个,500个……),把这么多的文件合并到一个excel文件用于统计,工作量太大了,手动去粘贴,你要加班几个小时呀,计算机最会做的就是重复循环做事情了,这时Python处理Excel文件的模块openpyxl,看我怎么样用它搞定我们的“3秒合并大量excel文件”。
1、用到的知识点:
Python的循环,内置os模块,列表及操作方法,wb对象基本操作包括创建和保存,ws的操作遍历,cell单元格的读取和写入等。
2、用到的文件:
各年级花名册文件,要求是xlsx扩展名的,非隐私数据(已经脱敏处理,人为更改)
各年级花名册
如需要请下载,通过阿里云盘分享,链接如下:https://www.aliyundrive.com/s/UEYTzKpjsxo
3、操作步骤思维导图
合并文件思维导图
4、代码操作编写截图:
合并大量excel文件1
合并大量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')
结果
网友们可以结合本例子,批量合并超多统一格式的excel文件,要举一反三,灵活运用,再次说,不理解的可以参考入门视频合集<python办公自动化openpyxl处理excel(基础篇)>
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com