OpenPyXL 循环遍历两个电子表格匹配主键并查找差异



没有办法在python中使用openpyxl循环访问2个电子表格并通过主键链接它们并找到列中的差异。下面的示例使用"name"作为主键,并创建一个具有差异的新列

new.xlsx:
BOB, 1
JIM, 2
STEVE, 3
old.xlsx:
BOB, 100
STEVE, 200
results on new.xlsx:
BOB, 1, 99
JIM, 2, 0
STEVE, 3, 197

像这样的东西

wb1 = load_workbook(r'new.xlsx')
wb2 = load_workbook(r'old.xlsx')
ws1 = wb1.get_sheet_by_name("Sheet1")
ws2 = wb2.get_sheet_by_name("Sheet1")
for rowNum in range(2, ws1.max_row):
     ws1row = ws1.cell(row=rowNum, column=1).value
     ws1row2 = ws1.cell(row=rowNum, column=2).value
     for rowNum2 in range(2, ws2.max_row):
         ws2row = ws2.cell(row=rowNum2, column=1).value
         ws2row2 = ws2.cell(row=rowNum2, column=2).value
         print ws2row
         if ws2row == ws1row:
         ws1.cell(row=rowNum, column=3).value = ws1row2 - ws2row2
wb1.save(r'new.xlsx')

有两种可能性:

  1. 创建第三个工作簿以写入结果
  2. 当您想插入新行时,您必须向下移动下面每个单元格的每个值,这可能需要很多时间......

不,在 openpyxl 中没有办法做到这一点。导入数据库,省去很多麻烦。

最新更新