比较openpyxl中两个电子表格中的一列

时间:2017-05-25 17:42:25

标签: python excel openpyxl

我正在制作一个excel比较程序,但我似乎陷入困境。我想在电子表格中比较两个excel文件。这是我的代码:

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)))

每次我运行它都会给我一个错误,说tuple() < int()。有谁能解决这个问题?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

此错误会弹出,因为您的变量x在行tuple执行时包含cellif row1[0].value != ws.cell(row=x, column=1).value:个对象。输入参数row需要int值。

我认为,针对您的问题的一个好方法是将for循环与zip语句结合使用(更多关于zip here):

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))