es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se guarda los datos del diccionario en la fila correspondiente de Excel pero en una columna diferente utilizando openpyxl?

Estoy usando openpyxl para leer una columna (A) de una hoja de cálculo de Excel. Luego itero a través de un diccionario para encontrar la información correspondiente y luego quiero escribir estos datos en la columna (C) de la misma hoja de cálculo de Excel.

He intentado averiguar cómo agregar datos de vuelta a la fila correspondiente, pero sin suerte.

CÓDIGO
“`from openpyxl import load_workbook

my_dict = {
    'Agriculture': 'ETSSAgriculture',
    'Dance': 'ETFA_Dance',
    'Music': 'ETFA_Music'
}

wb = load_workbook("/Users/administrator/Downloads/Book2.xlsx")  # Libro de trabajo
ws = wb['Sheet1']  # Hoja de trabajo
columna = ws['A']  # Columna
escribir_columna = ws['C']

lista_de_columna = [columna[x].value for x in range(len(columna))]
for k, v in my_dict.items():
    for l in lista_de_columna:
        if k in l:
            print(f'El dict para {l} es {v}')
            # agregar v a la fila del índice de celda de lista_de_columna```

Por lo tanto, si mi hoja de cálculo de Excel se ve así:

Quiero que la columna C se vea así después de haber emparejado el diccionario de datos.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para agregar los datos de vuelta a la fila correspondiente, puedes realizar un seguimiento del índice de la fila mientras iteras a través de los valores de la columna. Aquí hay un fragmento de código actualizado para lograr esto:

    from openpyxl import load_workbook
    
    my_dict = {
        'Agriculture': 'ET_SS_Agriculture',
        'Dance': 'ET_FA_Dance',
        'Music': 'ET_FA_Music'
    }
    
    wb = load_workbook('/Users/administrator/Downloads/Book2.xlsx')
    ws = wb['Sheet1']
    column = ws['A']
    write_column = ws['C']
    
    for i in range(1, len(column) + 1):
        cell_value = column[i].value
        write_value = None
        for k, v in my_dict.items():
            if k in cell_value:
                write_value = v
                break
        write_column.cell(row=i, column=3, value=write_value)
    
    wb.save('/Users/administrator/Downloads/Book2.xlsx')
    

    En este código actualizado, usamos un bucle for para iterar a través del índice de los valores de la columna (1 a longitud de la columna). Luego recuperamos el valor de la celda actual y recorremos el diccionario para encontrar el valor coincidente. Si se encuentra, asignamos ese valor a write_value y rompemos el bucle. Finalmente, usamos write_column.cell() para escribir el write_value en la fila correspondiente en la columna C. Luego guardamos el libro de trabajo usando wb.save().

Comments are closed.