openpyxl循环通过两个电子表格匹配主键并找到差异

时间:2016-06-09 15:39:00

标签: python excel 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')

2 个答案:

答案 0 :(得分:0)

有两种可能性:

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

答案 1 :(得分:0)

不,在openpyxl中无法做到这一点。导入到数据库中可以避免很多麻烦。