2016-11-21 6 views
0

Ich versuche, 2 Excel-Spalten in verschiedenen Arbeitsmappen mit Ppenpyxl in Python zu vergleichen. Bisher, was ich habe ist:Vergleichen Sie 2 Spalten in verschiedenen Excel-Arbeitsmappen: Python

#Load the workbooks 
wkb1 = load_workbook(filename = os.path.join(srcdir, "wbk1.xlsx")) 
wkb2 = load_workbook(filename = os.path.join(srcdir, "wbk2.xlsx")) 
#Find the last row of the excel data 
ws1 = wkb1.active 
wkb1_LastRow = ws1.max_row 
ws2 = wkb2.active 
wkb2_LastRow = ws2.max_row 

for xrow in range (1,(wkb1_LastRow+1)): 
    for yrow in range (1,(wkb2_LastRow+1)): 
     print (ws1.cell(row=xrow, column=1).value, ws2.cell(row=yrow, column=1).value) 
     if ws1.cell(row=xrow, column=1).value == ws2.cell(row=yrow, column=1).value: 
      print('HIT') 

Die Sache ist die, dass die if-Anweisung immer versagt, obwohl die zwei Spalten enthalten dieselben Werte:

... 
3145728 3145728, 
3145728 3145729, 
3145728 3145730, 
3145728 3145731, 
... 

Irgendwelche Ideen?

+0

scheint in einem Wert ein Leerzeichen vorhanden ist. Haben Sie versucht, eine Trimmung zu verwenden? –

+0

Sie müssen Ihre 'if' Anweisung einrücken. Gerade jetzt ist es nicht Teil der inneren Schleife über "yrow". – Olaf

+0

Der Einzug Fehler wurde nur in diesem Post gemacht. Das ist nicht das Problem – Nick

Antwort

0

FWIW mit Nested Loops ist nicht der Weg, dies zu tun. Es ist viel einfacher zu verwenden zip.

sollten folgende Arbeiten:

for src, target in zip(ws1['A'], ws2['A']): 
    if src.value == target.value: 
     print("Hit") 
Verwandte Themen