前几天老婆下载了一个较大的excel,筛选里面的数据时,自带的查找不够全面查找,高级筛选看的眼睛都花了。所以 自己闲下来写了一段代码,查找所需的数据进行打印出来。
excel查询数据
Tip:本文仅供学习与参考,且勿用作不法用途~
import openpyxl
get_work = openpyxl.load_workbook('C:\\Users\Dqking\Desktop\大数据.xlsx')
sheets_name = get_work.sheetnames#获取excel中Sheet名称
for sheet_name in sheets_name:
get_sheet = get_work[sheet_name]#循环名称
'''如果EXCEL中有合并单元格,代码会报错,所以先进行合并单元格查找并且进行拆分'''
hebing = get_sheet.merged_cells
m = []#空的列表
for hebing_four in hebing:
min_row,max_row,min_column,max_column = hebing_four.min_row,hebing_four.max_row,hebing_four.min_col,hebing_four.max_col
'''对单元格进行行和列的位置定位'''
if min_row == max_row and min_column == max_column:
'''如果行和列的数值相等,则没有合并单元格,pass'''
pass
else:
m.append((min_row,max_row,min_column,max_column))
'''如果行和列有不一样的,则有单元格合并,获取位置,添加到列表中'''
get_sheet.unmerge_cells(start_row = min_row,end_row = max_row,start_column = min_column,end_column=max_column)#进行单元格拆分
for data in get_sheet:
for shuju in data:
if shuju.value == None:
shuju.value='h'
'''如果某单元格未输入内容,则报错不是可迭代对象。将内容为空的单元格进行任意非空赋值即可'''
else:
pass
if '旅游管理' in shuju.value:
print('这是' + sheet_name + '页,第', shuju.row, '行数据')
for new_shuju in data:
print(new_shuju.value, end=' ')
print('')
'''查询含有 旅游管理 数据的行'''
if 'E' in shuju.coordinate and '日语' in shuju.value:
print('这是'+sheet_name+'页,第', shuju.row, '行数据')
for new_shuju in data:
print(new_shuju.value,end=' ')
print('')
'''查询E列含有 日语 数据的行'''
if '旅游管理' in shuju.value:
for new_shuju in data:
if 'B' in new_shuju.coordinate and '云南' in new_shuju.value:
print('这是' + sheet_name + '页,第', shuju.row, '行数据')
for new_shuju in data:
print(new_shuju.value, end=' ')
print('')
'''查询含有 旅游管理 数据且某列含有B数据的行'''
if 'M' in shuju.coordinate and '旅游管理' in shuju.value:
for new_shuju in data:
if 'B' in new_shuju.coordinate and '四川' in new_shuju.value:
print('这是' + sheet_name + '页,第', shuju.row, '行数据')
for new_shuju in data:
print(new_shuju.value,end=' ')
print('')
'''查询M列含有 旅游管理 数据且B列含有 云南 的行'''
# '''这里的四个if查询条件 需要哪一个 将其余三个注释掉即可'''
# '''如果查询条件还要严格一点。循环继续向下进行即可'''
else:
pass
# get_work.save('C:\\Users\Dqking\Desktop\大数据.xlsx') #单元格拆分和单元格为空写入非空数据未保存,进行保存。如果只进行查询,这条代码则注释不需要
# get_work.save('C:\\Users\Dqking\Desktop\大数据备份.xlsx')#如果原数据不能动,则进行保存并备份
'''openpyxl仅支持xlsx,不支持xls,如果需要进行xls查找,则进行修改excel属性,本代码不做修改'''
# 如果EXCEL中有合并单元格,则会读取失败。先进行拆分单元格,然后再读取。
# 如果EXCEL中有单元格没有数据,为空,不能进行迭代。先进行填充后在循环,
# openpyxl仅支持xlsx,如果excel格式为xls则会报错