现在有这么个需求,有两个Excel数据表格,没有唯一的字段进行关联,基本确定的规则是,在第一个数据表格中,有两列数据,在第二个数据表格中的描述列包含其信息,也就是第二个表格中的描述列,可能包括第一个数据表格的两列数据,现在自动处理的规则是,检测第二个数据表格中的描述列,其中包含第一个数据表格的两列数据,及匹配成功,并把第二个表格的其他数据提取到第一个表格中。
第一个数据表格的格式如下:文章源自陈学虎-https://chenxuehu.com/article/2021/06/7743.html
第二个数据表有一个描述列,和一个编号列,我现在要用第一个表的 Part 和 Footprint 去匹配,成功后,将第二个表的编号提取到第一个表中。文章源自陈学虎-https://chenxuehu.com/article/2021/06/7743.html
因为是临时处理这样的数据,就不过多的优化代码了,最快的搞定事情才是王道,按照自己的思路,一顿操作就实现了,代码虽乱,但是效果还是人工所不能比拟的:文章源自陈学虎-https://chenxuehu.com/article/2021/06/7743.html
import openpyxl epath = r"C:\Users\xuehu\Desktop\1.xlsx" epath_va = r"C:\Users\xuehu\Desktop\2.xlsx" # 一些配置信息 # 第一个数据表的数据起始行 first_excel_from = 10 # 第一个数据表格中需要匹配的数据列 first_excel_data_one = 4 # 第一个数据表中需要匹配的数据列 first_excel_data_two = 5 # 第二个数据表的起始行 second_excel_data = 1 # 第二个数据表中检测匹配的数据列 second_excel_checkdata = 6 # 第二个数据表中需要提取的数据列 second_excel_getdata = 5 tnum = 0 workbook = openpyxl.load_workbook(epath) booksheet = workbook.active rows = booksheet.rows columns = booksheet.columns nowrow = 0 workbook_w = openpyxl.Workbook() workbook_w.save("DATA.xlsx") sheet = workbook_w.active for row in rows: nowrow = nowrow + 1 nowcell = 0 # 开始读取行数据 if nowrow > first_excel_from: # 开始读取列数据 # 定义列数据表 orgdata = [] newdata = [] for cell in row: newdata.append(cell.value) nowcell = nowcell + 1 if nowcell == first_excel_data_one or nowcell == first_excel_data_two: # 将关键的匹配信息取出来 orgdata.append(cell.value) # print(cell.value, end=',') # print(orgdata) # 读取第二个匹配表的数据,对比,并提取数据 va_workbook = openpyxl.load_workbook(epath_va) va_booksheet = va_workbook.active va_rows = va_booksheet.rows va_columns = va_booksheet.columns va_rownum = 0 for va_row in va_rows: va_rownum = va_rownum + 1 va_cellnum = 0 if va_rownum > second_excel_data: for va_cell in va_row: if va_cell.value is None: va_cell.value = " " va_cellnum = va_cellnum + 1 if va_cellnum == second_excel_checkdata: # print(va_cell.value) # 执行数据匹配 tnum = 0 for st in orgdata: if st in va_cell.value: tnum = tnum + 1 if va_cellnum == second_excel_getdata: if tnum == 2: newdata.append(str(va_cell.value)) # print(va_cell.value) # print("============第二个表行结束================") print(newdata) sheet.append(newdata) # print("===========行结束===========") workbook_w.save("DATA.xlsx")
文章源自陈学虎-https://chenxuehu.com/article/2021/06/7743.html
然后我就匹配出了如下的结果:文章源自陈学虎-https://chenxuehu.com/article/2021/06/7743.html
文章源自陈学虎-https://chenxuehu.com/article/2021/06/7743.html
文章源自陈学虎-https://chenxuehu.com/article/2021/06/7743.html
文章源自陈学虎-https://chenxuehu.com/article/2021/06/7743.html
文章源自陈学虎-https://chenxuehu.com/article/2021/06/7743.html 文章源自陈学虎-https://chenxuehu.com/article/2021/06/7743.html
评论