现在有这么个需求,有两个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














评论