为什么这个循环的迭代不在 openpyxl 中添加单元格?

Why is the iteration over this loop not adding cells in openpyxl?

给定以下作为 xlsx roi.xlsx 的第一个 sheet 的内容:

然后:

wb = load_workbook('roi.xlsx', data_only=True)
ws=wb.worksheets[0]
keynames = [i.value for i in ws.columns[0]]

我想将 values 添加到以下字典的 B 列中:

mydict = {'carnival': 2, 'festival': 3}

当我尝试时:

for k, v in mydict.items():
    keyPosition = keynames.index(k)
    ws.cell(row = keyPosition, column = 2).value = v

我最终得到了一个新的 B 列,但始终为空值,AND 当我用 wb.save 保存文件后重新打开文件时,Excel 无法打开文件,因为它已损坏。

我认为问题是您使用 keynames 的索引存储在 B 列中,索引从 0 开始,但列 B 没有任何 0 行。理想情况下,您应该得到 - openpyxl.utils.exceptions.CellCoordinatesException: There is no row 0 (B0)

改用此代码(开始更改第 1 行的值,而不是第 0 行)-

for k, v in mydict.items():
    keyPosition = keynames.index(k)
    ws.cell(row = keyPosition + 1, column = 2).value = v