尝试使用openpyxl遍历2个列以查找特定行

时间:2019-01-29 03:12:44

标签: openpyxl

我想在B列和C列中找到一个特定的值,并使用该信息来指定正确的行。不幸的是,B列中的值重复出现。

比方说,我需要在B列和C列中找到具有ABC的行。我需要脚本遍历两列,直到找到匹配项,然后我需要它提供值的行号被发现

1 个答案:

答案 0 :(得分:0)

在仔细阅读了stackoverflow和其他各种资源之后,我想到的是这个。
基本上,我在B列中创建了一个列表,在C列中创建了一个列表。将这些列表压缩在一起以创建一个长元组,然后使用枚举来查找要查找的一对值所在的行。 / p>

无论如何,如果有人有更多的Pythonic解决方案,我将很高兴听到。

对于下面的代码,我要查找的值在B列中为3964729,在C列中为18

代码如下:

import openpyxl

wb = openpyxl.load_workbook("E:\\VoiceCore\\NSS HANDOVER NEW(5).xlsx")
ws = wb['Jan 20~ Jan 26']
#Creates a list of column B values
wo = []
for col in ws['B']:
    wo.append(col.value)
#Creates a list of column C values
task = []
for col in ws['C']:
    task.append(col.value)
#zips both lists in a tuple
woTask = zip(wo,task)
#enumerates the tuple
woRow = [i for i, e in enumerate(woTask, 1) if e == (3964729, 18)]
'''The woRow variable spits out row 78, which is the row that I was looking for, 
but its type is list. I then do a for loop to extract the value out of the list to 
get an integer, which I use for further processing'''      
for i in woRow:
    woRowInt = i