Python利用模糊查询两个excel文件数据 导出新表格
Python利用模糊查询两个excel文件数据 导出新表格
实际工作中,需要将两个excel表格中的数据进行模糊查询,最后将查询结果按照要求生成新的表格文件。
例如:领导安排了一个报表,需要将表2(缺陷查询数据导出.xls)中的厂站名称,缺陷描述对照表1(设备台账统计.xlsx)进行统计,表2的内容如下:
再看看表1
具体要求是,对照表1厂站名称,按个对表2中的厂站名称进行查找,查找后再对照表1中间隔名称查找表2中缺陷描述内容,最后把有缺陷的内容按照表1的顺序重新生成一个表格(PS:本来想在表1中更新,学的不扎实,没搞出来)。手动查询,无奈表格数据达到几万条,泪奔!!!
进过两天学习,看大神的代码(大部分看不懂),基本完成目标,顺利解放小拇指,具体代码如下:
# code=utf-8
import xlrd
import xlwt
import timexlsx_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中的数据赋值到变量biandianzhanjiangemingcheng = l['key_jiangemingcheng'] # 将列表1中的间隔名称赋值到jiangemingchengmun1 = mun1 + 1print(biandianzhan)quexian_huizong = '' #用于检测mun2 = 0for k in all_date2: # for循环从第二个字典中提取数据biandianzhan_quexian = k['key_biandianzhan_quexian'] # 将列表2中变电站数据赋值到变量biandianzhan_quexianjiangemingcheng_quexian = k['key_jiangemingcheng_quexian'] # 将列表2中变电站数据赋值到变量jiangemingcheng_quexianmun2 = 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 # 缺陷数量加1print('找到', 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日
Python利用模糊查询两个excel文件数据 导出新表格相关推荐
- 使用Python解决对比出两个Excel文件中的不同项并将结果重新写入一个新的Excel文件
使用Python解决对比出两个Excel文件中的不同项并将结果重新写入一个新的Excel文件 因为有统计成员到会情况的任务,每次汇总时都很麻烦,需要一个个对应腾讯会议导出名单的成员,然后在总表上进行标 ...
- Python+pywin32批量读取带密码的Excel文件数据导出为CSV文件
好消息:"Python小屋"编程比赛正式开始 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大学出版社, ...
- python利用pandas对两张excel表合并(一)
工作中,我们会经常遇到需要对表中记录进行合并的情况,如下图所示: 需要得到如下结果: 下面我将通过几行python代码实现上述功能: import pandas as pd # 读取1表(参数分别为1 ...
- python计算csv文件内的数据_Python利用pandas计算多个CSV文件数据值的实例
功能:扫描当前目录下所有CSV文件并对其中文件进行统计,输出统计值到CSV文件 pip install pandas import pandas as pd import glob,os,sys in ...
- python将两个excel匹配_Python3实现两个Excel文件内容比对
#-*- coding: utf-8 -*- #比对两个Excel文件内容的差异 #---------------------假设条件---------------- #1.源表和目标表格式一致 #2 ...
- Python使用openpyxl和pandas处理Excel文件实现数据脱敏案例一则
推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),清华大学出版社,2020年6月第1次印刷 送书活动火爆进行中:董老师又双叒叕送书啦,30本 ...
- 怎么用python处理excel文件-Python自动化如何处理excel文件数据
原标题:Python自动化如何处理excel文件数据 在python自动化中,经常会遇到对数据文件的操作,比如添加多名员工,但是直接将员工数据写在python文件中,不但工作量大,要是以后再次遇到类似 ...
- python数据库模糊查询_Python操作mongodb数据库进行模糊查询操作示例
本文实例讲述了Python操作mongodb数据库进行模糊查询操作.分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- import pymongo import re ...
- Python使用xlwt和xlrd读写excel文件
Python使用xlwt和xlrd读写excel文件 xlwt和xlrd是两个相互配套的模块,在Python中,用于将数据写入Excel文件和读取Excel文件的数据. 从字面即可看出xlwt是对xl ...
- 利用pandas读取Excel文件数据
说明 pandas能帮助我们在Python 代码中直接读取Excel 文件数据. 但只有pandas是不行的,会报错: ImportError: Missing optional dependency ...
最新文章
- python水仙花数_scratch与pythonc++的不同,你了解吗?
- 高颜值性价比神器,乐Pro3双摄AI版带来不一样的上手体验
- 工作是老板的,生命是自己的。
- 浅析BMP位图文件结构(含Demo)[转]
- Migrate blog from blogcn here
- idea打包Jar包
- 【安全牛学习笔记】端口扫描
- 雷凌3070无线网卡linux驱动,3070无线网卡驱动,小编教你ralink3070无线网卡驱动
- Openg~lopengl中文手册4.5
- 对应阻尼下的开环增益matlab,自动控制原理实验指导书MATLAB版解析.doc
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)
- 给移动硬盘装上LINUX全攻略,简单几步把Ubuntu装进移动硬盘引导使用
- 计算机编程 计算存款利息,作业报告12 定期存款利息计算器
- 科研合作应该互相尊重
- About Variables
- 联想计算机如何修改启动顺序,联想电脑怎么在BOSS里设置启动次序
- Zmeet云会议私有化部署--真正能私有化部署的类zoom会议
- android智能家居使用的协议,基于Android的智能家居APP的设计与实现论文.docx
- 物联网操作系统应该怎么选?
- mos管 rl_MOS各个参数详解