目录
1.前言
在日常工作中,可能经常会遇到一个表格中有几千几万条数据,要筛选出里面带有相同信息的部分数据。
话不多说,咱们直接上案例和代码。
2.需求
用一个有少量数据的表格(下称T21.xlsx)来做为演示(如下图),表格中有很多组人名信息,其中有许多个小明,但并不是同一个人,现在需要从这些数据中筛选出小明的信息,并另存为一张新表。
3.解决思路
采取openpyxl模块来进行处理,首先打开T21.xlsx文件,获取表格对象,读取其中的表头存储进列表,这么做的目的是为了后面新建表格的时候不用自己手动输入表头,可以直接沿用T21.xlsx的表头数据
# 导入模块
from openpyxl import load_workbook,Workbook
# 打开文件
wb=load_workbook('T21.xlsx')
ws=wb.active
# 定义一个列表存储表头
list1=[]
for i in ws[1]:
list1.append(i.value)
新建一个工作簿文件获取表格对象,将上一步获取的表头数据添加进新表格,然后对原表所有数据进行获取,利用if判断语句来判断姓名是否是小明,如果是小明,就把该行数据添加进新表中
# 新建一个文件
wb2=Workbook()
ws2=wb2.active
# 将表头添加进新表
ws2.append(list1)
# 遍历表格,按行获取数据
for row in ws.iter_rows(min_row=2,values_only=True):
# 判断每一行的第一个单元格是否是小明
if row[0]=='小明':
ws2.append(row)
保存新工作簿为T22.xlsx
wb2.save('T22.xlsx')
4.完整代码
# 导入模块
from openpyxl import load_workbook,Workbook
# 打开文件
wb=load_workbook('T21.xlsx')
ws=wb.active
# 定义一个列表存储表头
list1=[]
for i in ws[1]:
list1.append(i.value)
# 新建一个文件
wb2=Workbook()
ws2=wb2.active
# 将表头添加进新表
ws2.append(list1)
# 遍历表格,按行获取数据
for row in ws.iter_rows(min_row=2,values_only=True):
# 判断每一行的第一个单元格是否是小明
if row[0]=='小明':
ws2.append(row)
wb2.save('T22.xlsx')
这个案例只是演示对单个表格文件的数据进行处理,也可以对很多个文件的数据进行处理,只需要利用os模块中的listdir来拼接得到各个文件的路径,配合for循环来逐个打开文件即可。