2017-05-25 94 views
1

我在做一個比較程序的excel,但我似乎被卡住了。我想比較電子表格中的兩個excel文件。這裏是我的代碼:比較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))) 

而且每次運行這個時候它給了我一個錯誤說tuple() < int()。任何人都可以解決這個問題任何幫助,將不勝感激。

+0

你試圖比較從第一表中的列(0.1 .xlsx)到第二行(0.2.xlsx)? – njoosse

回答

2

此錯誤會彈出,因爲您的變量x包含的對象在if row1[0].value != ws.cell(row=x, column=1).value:行被執行時的對象tuple。輸入參數row需要一個int值。

我認爲你的問題的好方法是使用組合for循環與zip語句(更多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))