Python利用模糊查询两个excel文件数据 导出新表格

您所在的位置:网站首页 减肥期间可以喝蔬菜粥吗 Python利用模糊查询两个excel文件数据 导出新表格

Python利用模糊查询两个excel文件数据 导出新表格

2024-06-16 17:15| 来源: 网络整理| 查看: 265

Python利用模糊查询两个excel文件数据 导出新表格

实际工作中,需要将两个excel表格中的数据进行模糊查询,最后将查询结果按照要求生成新的表格文件。 例如:领导安排了一个报表,需要将表2(缺陷查询数据导出.xls)中的厂站名称,缺陷描述对照表1(设备台账统计.xlsx)进行统计,表2的内容如下: 表2 缺陷查询数据导出.xls 再看看表1 表1 设备台账统计 具体要求是,对照表1厂站名称,按个对表2中的厂站名称进行查找,查找后再对照表1中间隔名称查找表2中缺陷描述内容,最后把有缺陷的内容按照表1的顺序重新生成一个表格(PS:本来想在表1中更新,学的不扎实,没搞出来)。手动查询,无奈表格数据达到几万条,泪奔!!! 进过两天学习,看大神的代码(大部分看不懂),基本完成目标,顺利解放小拇指,具体代码如下:

# code=utf-8 import xlrd import xlwt import time xlsx_new = xlrd.open_workbook('设备台账统计.xlsx') sheets_new = xlsx_new.sheet_by_index(1) # 读取第二个表 xlsx_quexian = xlrd.open_workbook('缺陷查询数据导出.xls') sheets_new_quexian = xlsx_quexian.sheet_by_index(1) new_workbook = xlwt.Workbook() worksheet = new_workbook.add_sheet('new_sheet') xlsx1_row = sheets_new.nrows # 读取表1总列数 xlsx2_row = sheets_new_quexian.nrows # 读取表2总列数 all_date1 = [] # 存储表1数据,列表 all_date2 = [] # 存储表2数据,列表 quexian_huizong = '' mun = 0 # 用于记录缺陷总数 mun1 = 0 # 用于记录当前执行表1中的次数 mun2 = 0 # 用于记录当前执行表2中的次数 print('表1总行数为:', xlsx1_row, '表2总行数为:', xlsx2_row, ) print('查询花费时间较长!!!!!''马上开始......') time.sleep(1) # 等待1秒 for i in range(3, xlsx1_row): # 读取总的行数 key_biandianzhan = sheets_new.cell(i, 1).value # 读取表1中变电站名称 key_jiangemingcheng = sheets_new.cell(i, 4).value # 读取变电站间隔名称 date1 = {'key_biandianzhan': key_biandianzhan, 'key_jiangemingcheng': key_jiangemingcheng} # 设置字典 all_date1.append(date1) # 将表1中数据写入列表 print('表1数据复制成功!!!') time.sleep(1) # 等待1秒 for j in range(3, xlsx2_row): # 表2总列数 key_biandianzhan_quexian = sheets_new_quexian.cell(j, 5) # 读取表2中变电站名称 key_jiangemingcheng_quexian = sheets_new_quexian.cell(j, 7) # 读取变电站缺陷 date2 = {'key_biandianzhan_quexian': key_biandianzhan_quexian, 'key_jiangemingcheng_quexian': key_jiangemingcheng_quexian} # 将表2中数据写入字典 all_date2.append(date2) print('表2数据复制成功!!!') time.sleep(1) # 等待1秒 print('开始查询....................') for l in all_date1: # for循环从表1中提取变电站 biandianzhan = l['key_biandianzhan'] # 将列表1中的数据赋值到变量biandianzhan jiangemingcheng = l['key_jiangemingcheng'] # 将列表1中的间隔名称赋值到jiangemingcheng mun1 = mun1 + 1 print(biandianzhan) quexian_huizong = '' #用于检测 mun2 = 0 for k in all_date2: # for循环从第二个字典中提取数据 biandianzhan_quexian = k['key_biandianzhan_quexian'] # 将列表2中变电站数据赋值到变量biandianzhan_quexian jiangemingcheng_quexian = k['key_jiangemingcheng_quexian'] # 将列表2中变电站数据赋值到变量jiangemingcheng_quexian mun2 = mun2 + 1 # if str(biandianzhan) in str(biandianzhan_quexian): # 判断语句,判断表1中变电站名称在表2变电站名称,表1变电站名称相对表2变电站名称存在描述不全现象。 if str(jiangemingcheng) in str(jiangemingcheng_quexian): # 判断语句,判断表1中变电站间隔名称在包含在表2中缺陷描述。 quexian_huizong = str(jiangemingcheng_quexian) + str(quexian_huizong) quexian_huizong = str(jiangemingcheng_quexian) + str(quexian_huizong) print('------总进度', mun1, '/', xlsx1_row, ' 分进度', mun2, '/', xlsx2_row, '------') # 打印判断进度 mun = mun + 1 # 缺陷数量加1 print('找到', mun, '条符合条件缺陷') # 打印当前查到的缺陷数量 print('变电站名称:', biandianzhan, '缺陷描述:', jiangemingcheng_quexian) # 打印当前查询到的变电站名称和缺陷描述 worksheet.write(mun1,0,biandianzhan) #数据写入新的工作表 worksheet.write(mun1,1,jiangemingcheng) #数据写入新的工作表 worksheet.write(mun1,2,quexian_huizong) #数据写入新的工作表 new_workbook.save('生成数据.xls') print('执行完毕!!!')

执行后在当前目录下生成新的excel文件,已经按照表2顺序对缺陷进行统计。 当然还是有部分内容没有完全搞清楚,字符串里面有个字典,怎么赋值,还有有没有其他的方法可以更加方便的实现该功能,希望大神不吝赐教。 记录于2020年2月26日



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3