Modificare colore celle excel in base al valore

di il
2 risposte

Modificare colore celle excel in base al valore

Ciao a tutti,

ho creato un codice con python per esportare un dataframe in excel. Il codice funziona perfettamente. 

Volevo però colorare le celle in base al valore, e qui nascono i primi problemi.

Facendo una ricerca sul web, ho provato a fare quanto segue, ma ottengo il mio file excel senza alcuna cella colorata. 

Qualche suggerimento per favore?

Grazie in anticipo

Ps. ho postato solo la parte di codice interessata alla creazione del file excel

def cond_formatting(x):
    if x == 'OK':
        return 'background-color: lightgreen'
    elif x == 'NO':
        return 'background-color: red'
    else:
        return None
        
print(pd.merge(df, df2, left_on='uniquefield', right_on='uniquefield2', how='left').drop('uniquefield2', axis=1))
df3 = df.merge(df2, left_on='uniquefield', right_on='uniquefield2', how='left').drop(['uniquefield2', 'tournament2', 'home2', 'away2', 'result2'], axis=1) 

df3 = df3[["home","away","scorehome","scoreaway","best_bets","oddtwo","oddthree","htresult","shresult","result","over05ht","over15ht","over05sh","over15sh","over05","over15","over25","over35","over45","goal","esito","tournament","uniquefield"]]
df3 = df3.sort_values('best_bets')

df3.style.applymap(cond_formatting)



# determining the name of the file
file_name = camp + '_Last_20' + '.xlsx'
 
# saving the excel
df3.to_excel(file_name, freeze_panes=(1, 0))
print('Tournament is written to Excel File successfully.')

2 Risposte

  • Re: Modificare colore celle excel in base al valore

    Ciao,

    secondo me potresti :

    • creare una funzione con le condizioni di quando e come colorare le celle
    • aggiungere nell'applicazione della formattazione condizionale quanto riportato al punto precedente
    • scegliere se applicare la formattazione per cella per colonna o per riga (questo dipende da te) 
  • Re: Modificare colore celle excel in base al valore

    08/02/2025 - By65Franco ha scritto:

    Ciao,

    secondo me potresti :

    • creare una funzione con le condizioni di quando e come colorare le celle
    • aggiungere nell'applicazione della formattazione condizionale quanto riportato al punto precedente
    • scegliere se applicare la formattazione per cella per colonna o per riga (questo dipende da te) 

    Grazie per la risposta, ho risolto cosi (creando anche un filtro e un blocco nella prima riga):

    excel_filename = camp + '_Last_20' + '.xlsx'
    df3.to_excel(excel_filename, index=False)
    
    wb = load_workbook(excel_filename)
    ws = wb.active
    
    ws.auto_filter.ref = ws.dimensions
    
    c = ws['A2']
    ws.freeze_panes = c
    
    # Define fill colors
    green_fill = PatternFill(start_color="00FF00", end_color="00FF00", fill_type="solid")  # Green for "OK" and 1
    red_fill = PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid")    # Red for "NO" and 2
    yellow_fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")    # Yellow for "X"
    
    # Apply color based on cell value in the "Status" column
    for row in ws.iter_rows(min_row=2, max_row=ws.max_row, min_col=2, max_col=ws.max_column):  
        for cell in row:
            if cell.value == "OK" or cell.value == "1":
                cell.fill = green_fill
            elif cell.value == "NO" or cell.value == "2":
                cell.fill = red_fill
            elif cell.value == "X":
                cell.fill = yellow_fill
    
    wb.save(excel_filename)
    
    print("Excel file created successfully!")
    
Devi accedere o registrarti per scrivere nel forum
2 risposte