Openpyxl:将字典中的列表附加到匹配的excel行的末尾

时间:2015-12-08 23:59:22

标签: python openpyxl

我有一份清单词典:

dictofannotations = {
'5988': ['1', '1', '1', '1', '1', '1', '1', '2', '1'],
'5989': ['2', '1', '1', '1', '1', '1', '1', '1', '1'],
'5982': ['1', '1', '2', '1', '1', '1', '1', '2', '1']
}

这些字典键可以在excel文件的一列(9或J)中找到。当为字典键找到excel文档中的匹配项时,我想将列表(一个列表项添加到一个单元格)到匹配行的末尾。

我已经关闭,但无法写入工作簿。

filename = 'dataset.xlsx'
wb = load_workbook(filename)
ws = wb.get_sheet_by_name('Dataset')


for x in range(1,7582):
##7582 is the number of rows in the document, 1 should ignore the header

    if ws.cell(row = x, column = 9).value in dictofannotations:
        ws.append(dictofannotations[ws.cell(row = x, column = 9)])

wb.save("finaldataset.withannotations.xlsx")

1 个答案:

答案 0 :(得分:0)

openpyxl的物理上不存在行,因此您无法将单元格附加到现有工作表。相反,您必须手动创建/覆盖单元格。

这样做的逻辑是:

if cell in dictofannotations:
     values = dictofannotations[key]
     for idx, value in values:
          ws.cell(row=x, col=9+idx, value=value)