2017-05-25 2 views
1

Ich mache ein Excel-Vergleichsprogramm, aber ich bin festgefahren. Ich möchte zwei Excel-Dateien in einer Tabelle vergleichen. Hier ist mein Code:Vergleichen einer Spalte in zwei Tabellen in openpyxl

import openpyxl 

wb = openpyxl.load_workbook('C:\\Users\\Bill\\Desktop\\CK_Server_list_0.1.xlsx') 
ws = wb.active 

wb1 = 
openpyxl.load_workbook('C:\\Users\\Bill\\Desktop\\CK_Server_list_0.2.xlsx') 
ws1 = wb1.active 

for x in ws.iter_cols(max_col=1): 
     for cell in x: 
       print(cell.value, cell.coordinate) 


for row1 in ws1.iter_cols(min_col=1): 
     if row1[0].value != ws.cell(row=x, column=1).value: 
       print(str(row1[0].value) + ' is not equal to ' + str(ws.cell(row=x, column=1).value + ' ' + str(ws.cell(row=x, column=1).coordinate))) 

Und jedes Mal, wenn ich dies ausführen es gibt mir eine Fehlermeldung, dass tuple() < int(). Kann jemand dieses Problem beheben? Jede Hilfe wäre willkommen.

+0

Versuchen Sie, eine Spalte aus der ersten Tabelle zu vergleichen (0,1 .xlsx) zu einer Zeile in der zweiten (0.2.xlsx)? – njoosse

Antwort

2

Dieser Fehler erscheint, weil Ihre Variable x ein tuple von cell Objekte zu der Zeit enthält, wenn die Leitung if row1[0].value != ws.cell(row=x, column=1).value: ausgeführt wird. Das Eingabeargument row erfordert stattdessen einen Wert int.

Ich denke, dass ein guter Ansatz für Ihr Problem zu verwenden wäre for Schleifen in Kombination mit zip Aussagen (mehr ziphere):

import openpyxl 

wb = openpyxl.load_workbook('C:\\Users\\Bill\\Desktop\\CK_Server_list_0.1.xlsx') 
ws = wb.active 

wb1 = openpyxl.load_workbook('C:\\Users\\Bill\\Desktop\\CK_Server_list_0.2.xlsx') 
ws1 = wb1.active 

for (col, col_1) in zip(ws.iter_cols(), ws1.iter_cols()): 
    for (cell, cell_1) in zip(col, col_1): 
     if cell.value != cell_1.value: 
      print(str(cell.value) + ' is not equal to ' + str(cell_1.value) + ' ' + str(cell.coordinate)) 
Verwandte Themen