有
没有办法在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')
有两种可能性:
- 创建第三个工作簿以写入结果
- 当您想插入新行时,您必须向下移动下面每个单元格的每个值,这可能需要很多时间......
不,在 openpyxl 中没有办法做到这一点。导入数据库,省去很多麻烦。