如何使用 openpyxl 将一个 excel 文件的列值与 Python 中另一个 excel 文件的列值进行比较?

How to compare column values of one excel file to the column values of another excel file in Python using openpyxl?

我能够读取两个 excel 文件的列数据。下面是我的代码:-

from openpyxl import load_workbook

book = load_workbook("Book1.xlsx")
book2 = load_workbook("Book2.xlsx")

sheets = book['Sheet1']
anotherSheet = book2["sheet1"]

for val1 in sheets:
    print(val1[0].value)

print("\n\n\n\n")

for val2 in anotherSheet:
    print(val2[0].value)

我需要将 Book1 列的每个值与 Book2 列的每个值进行比较。我完全不知道如何进行比较。如果值匹配,那么我可以添加另一列并输入“是”,如果不匹配,则我可以输入“否”。换句话说,我只需要检查 Book1 的 Column 的值是否存在于 Book2 中。非常感谢您的帮助。

我不知道完整的答案,但我想你可以获取数组中的值并一一比较它们

终于找到解决办法了

首先,我们需要创建 3 个列表来存储 book1、book2 的值和 tempList 来存储匹配的值。

from openpyxl import load_workbook

book = load_workbook("Book1.xlsx")
book2 = load_workbook("Book2.xlsx")

sheets = book['Sheet1']
anotherSheet = book2["sheet1"]
book1_list = []
book2_list = []
tempList = []

接下来,我们还想跳过列标题并存储在新变量中。

skip_Head_of_anotherSheet = anotherSheet[2: anotherSheet.max_row]

然后遍历 sheets 并将所需列的值附加到它们各自的列表中(在我的例子中它是“0”,这意味着第一列)。

for val1 in sheets:
    book1_list.append(val1[0].value)

for val2 in skip_Head_of_anotherSheet:
    book2_list.append(val2[0].value)

检查列表中的重复项并删除所有重复值。

book1_list = list(dict.fromkeys(book1_list))

存储列表的长度以供调试

length_of_firstList = len(book1_list)
length_of_secondList = len(book2_list)

接下来,遍历两个列表并检查它们是否匹配,然后将匹配的值存储到 tempList

for i in book1_list:
    for j in book2_list:
        if i == j:
           tempList.append(j)
           #print(j)

现在,是时候编辑我们的 excel sheet 了。我们将遍历存储在 tempList 中的匹配值,并找到实际 excel sheet 中的那些值。当我们检测到相同的值时,我们将通过识别特定行的索引将 YES 标记到 excel sheet 的第 4 列,即 'D' 列。此外,如果我们的 'D' 列中的单元格为空白,那么我们将标记 NO.

for temp in tempList:
    for pointValue in skip_Head_of_anotherSheet:
        if temp == pointValue[0].value:
            anotherSheet.cell(column=4, row=pointValue[0].row, value="YES")
            #print(pointValue[0].row)

        if pointValue[3].value is None:
            anotherSheet.cell(column=4, row=pointValue[0].row, value="NO")

最后,我们将添加一个 header 到我们新填充的列并保存我们的 excel sheet 并打印所需的信息以进行调试。

anotherSheet.cell(column=4, row=1, value="PII")
book2.save("Book2.xlsx")

print("SUCCESSFULLY UPDATED THE EXCEL SHEET")
print("Length of First List = ", length_of_firstList)
print("Length of Second List = ", length_of_secondList)

我希望这对遇到同样问题的人有所帮助。