diff --git a/fixgaiaexcel.py b/fixgaiaexcel.py index 6bd62ad..7f25e79 100644 --- a/fixgaiaexcel.py +++ b/fixgaiaexcel.py @@ -65,15 +65,16 @@ def estrai_date(testo): return date_trovate -def trova_data_piu_vecchia(date_list): +def seleziona_data(date_list, piu_recente=False): """ - Trova la data più vecchia da una lista di date, rimuovendo i doppioni. + Seleziona la data più vecchia o più recente da una lista, rimuovendo i doppioni. Args: date_list: Lista di stringhe nel formato aaaa-mm-gg + piu_recente: Se True, seleziona la data più recente; altrimenti la più vecchia Returns: - str: La data più vecchia, o None se la lista è vuota + str: La data selezionata, o None se la lista è vuota """ if not date_list: return None @@ -84,8 +85,8 @@ def trova_data_piu_vecchia(date_list): # Ordina le date (come stringhe funziona perché il formato aaaa-mm-gg è ordinabile) date_uniche.sort() - # Ritorna la prima (più vecchia) - return date_uniche[0] + # Ritorna la prima (più vecchia) o l'ultima (più recente) + return date_uniche[-1] if piu_recente else date_uniche[0] def estrai_qualifica(testo): @@ -159,16 +160,92 @@ def leggi_dati_colonna(sheet, col_idx): return dati +def stampa_help(): + """Stampa il messaggio di aiuto completo.""" + help_text = """ +╔══════════════════════════════════════════════════════════════════════════════╗ +║ FIXGAIAEXCEL - Script di aiuto ║ +╚══════════════════════════════════════════════════════════════════════════════╝ + +DESCRIZIONE: + Script per processare file Excel contenenti dati di titoli e qualifiche. + + Lo script: + 1. Cerca la colonna "Titoli - Operativita - Data ottenimento - Data scadenza" + 2. Estrae le qualifiche (testo senza date) da ogni cella + 3. Estrae tutte le date in formato aaaa-mm-gg + 4. Aggiunge due nuove colonne al file Excel: + - "Qualifica": testo pulito della qualifica + - "Data": data selezionata secondo il criterio scelto + 5. Salva un nuovo file con suffisso "_modificato" + +UTILIZZO: + python fixgaiaexcel.py [opzioni] + +ESEMPI: + # Estrae la data più vecchia (comportamento predefinito) + python fixgaiaexcel.py "data/report.xlsx" + + # Estrae la data più recente + python fixgaiaexcel.py "data/report.xlsx" --data-recente + + # Mostra questo aiuto + python fixgaiaexcel.py --help + +OPZIONI: + --data-recente, --recente + Seleziona la data più RECENTE invece della più VECCHIA per ogni riga. + Di default, lo script seleziona sempre la data più vecchia. + + --help, -h + Mostra questo messaggio di aiuto ed esce. + +FILE DI OUTPUT: + Il file originale non viene modificato. + Viene creato un nuovo file con il suffisso "_modificato". + Esempio: "report.xlsx" → "report_modificato.xlsx" + +AUTORE: + Luigi D'Acunto + +DATA: + 25 novembre 2025 + +╚══════════════════════════════════════════════════════════════════════════════╝ +""" + print(help_text) + + def main(): """Funzione principale dello script.""" + # Controlla se è richiesto l'help + if '--help' in sys.argv or '-h' in sys.argv: + stampa_help() + sys.exit(0) + # Controlla gli argomenti da riga di comando if len(sys.argv) < 2: - print("Uso: python fixgaiaexcel.py ") - print("Esempio: python fixgaiaexcel.py data/report.xlsx") + print("Errore: File Excel non specificato\n") + print("Uso: python fixgaiaexcel.py [opzioni]") + print("\nEsempi:") + print(" python fixgaiaexcel.py data/report.xlsx") + print(" python fixgaiaexcel.py data/report.xlsx --data-recente") + print("\nPer maggiori informazioni: python fixgaiaexcel.py --help") sys.exit(1) - file_path = Path(sys.argv[1]) + # Verifica se è stata richiesta la data più recente + usa_data_recente = '--data-recente' in sys.argv or '--recente' in sys.argv + + # Filtra gli argomenti per trovare il percorso del file (escludendo i flag) + file_args = [arg for arg in sys.argv[1:] if not arg.startswith('--') and not arg.startswith('-')] + + if not file_args: + print("Errore: Nessun file specificato") + print("\nPer maggiori informazioni: python fixgaiaexcel.py --help") + sys.exit(1) + + file_path = Path(file_args[0]) # Verifica che il file esista if not file_path.exists(): @@ -181,6 +258,7 @@ def main(): sys.exit(1) print(f"Apertura file: {file_path}") + print(f"Modalità: {'Data più RECENTE' if usa_data_recente else 'Data più VECCHIA'}") print("-" * 70) try: @@ -236,14 +314,14 @@ def main(): date_estratte = estrai_date(valore) if date_estratte: - # Trova la data più vecchia - data_piu_vecchia = trova_data_piu_vecchia(date_estratte) + # Seleziona la data (più vecchia o più recente) + data_selezionata = seleziona_data(date_estratte, usa_data_recente) # Scrivi i dati nelle nuove colonne sheet.cell(row=row_idx, column=col_qualifica).value = qualifica - sheet.cell(row=row_idx, column=col_data).value = data_piu_vecchia + sheet.cell(row=row_idx, column=col_data).value = data_selezionata - print(f" Riga {idx:3d}: Qualifica='{qualifica}' | Data={data_piu_vecchia}") + print(f" Riga {idx:3d}: Qualifica='{qualifica}' | Data={data_selezionata}") contatore_righe_con_date += 1 else: # Scrivi solo la qualifica se non ci sono date