为什么这个循环的迭代不在 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
给定以下作为 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