¿Por qué la iteración sobre este bucle no agrega celdas en openpyxl?

Dado lo siguiente como el contenido de la primera hoja de un xlsx roi.xlsx:

introduzca la descripción de la imagen aquí

Entonces:

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

Quiero agregar valores a la columna B desde el siguiente dictado:

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

Cuando bash

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

Terminé con una nueva columna B, pero con valores vacíos en todas partes, Y cuando vuelvo a abrir el archivo después de guardarlo con wb.save, Excel no puede abrir el archivo porque está dañado.

Related of "¿Por qué la iteración sobre este bucle no agrega celdas en openpyxl?"

Creo que el problema es que está utilizando el índice de keynames para almacenar en la columna B, el índice comienza en 0, pero la columna B no tiene ninguna fila 0. Idealmente debería estar obteniendo – openpyxl.utils.exceptions.CellCoordinatesException: There is no row 0 (B0)

Pruebe este código en su lugar (para comenzar a cambiar los valores en la fila 1, en lugar de 0) –

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