excel查询指定数据

前几天老婆下载了一个较大的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则会报错
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值