python-为什么这个循环的迭代没有在openpyxl中添加单元格?

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

然后:

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

我想从以下字典将值添加到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,但整个字段为空,并且当我用wb.save保存文件后重新打开文件时,Excel无法打开文件,因为文件已损坏.

解决方法:

我认为问题在于您正在使用键名索引存储在B列中,索引从0开始,但是B列没有任何0行.理想情况下,您应该获取-openpyxl.utils.exceptions.CellCoordinatesException:没有行0(B0)

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

for k, v in mydict.items():
    keyPosition = keynames.index(k)
    ws.cell(row = keyPosition + 1, column = 2).value = v
上一篇:使用openpyxl创建excel并设置单元格样式


下一篇:python-如何使用openpyxl获取位置(行,列)处单元格的值?