Rinomina la funzione per selezionare date e aggiungi supporto per data più recente; implementa messaggio di aiuto completo
This commit is contained in:
parent
97f0793f0d
commit
f36815b8e7
1 changed files with 90 additions and 12 deletions
102
fixgaiaexcel.py
102
fixgaiaexcel.py
|
|
@ -65,15 +65,16 @@ def estrai_date(testo):
|
||||||
return date_trovate
|
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:
|
Args:
|
||||||
date_list: Lista di stringhe nel formato aaaa-mm-gg
|
date_list: Lista di stringhe nel formato aaaa-mm-gg
|
||||||
|
piu_recente: Se True, seleziona la data più recente; altrimenti la più vecchia
|
||||||
|
|
||||||
Returns:
|
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:
|
if not date_list:
|
||||||
return None
|
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)
|
# Ordina le date (come stringhe funziona perché il formato aaaa-mm-gg è ordinabile)
|
||||||
date_uniche.sort()
|
date_uniche.sort()
|
||||||
|
|
||||||
# Ritorna la prima (più vecchia)
|
# Ritorna la prima (più vecchia) o l'ultima (più recente)
|
||||||
return date_uniche[0]
|
return date_uniche[-1] if piu_recente else date_uniche[0]
|
||||||
|
|
||||||
|
|
||||||
def estrai_qualifica(testo):
|
def estrai_qualifica(testo):
|
||||||
|
|
@ -159,16 +160,92 @@ def leggi_dati_colonna(sheet, col_idx):
|
||||||
return dati
|
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 <file_excel> [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():
|
def main():
|
||||||
"""Funzione principale dello script."""
|
"""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
|
# Controlla gli argomenti da riga di comando
|
||||||
if len(sys.argv) < 2:
|
if len(sys.argv) < 2:
|
||||||
print("Uso: python fixgaiaexcel.py <percorso_file_excel>")
|
print("Errore: File Excel non specificato\n")
|
||||||
print("Esempio: python fixgaiaexcel.py data/report.xlsx")
|
print("Uso: python fixgaiaexcel.py <percorso_file_excel> [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)
|
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
|
# Verifica che il file esista
|
||||||
if not file_path.exists():
|
if not file_path.exists():
|
||||||
|
|
@ -181,6 +258,7 @@ def main():
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
print(f"Apertura file: {file_path}")
|
print(f"Apertura file: {file_path}")
|
||||||
|
print(f"Modalità: {'Data più RECENTE' if usa_data_recente else 'Data più VECCHIA'}")
|
||||||
print("-" * 70)
|
print("-" * 70)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
@ -236,14 +314,14 @@ def main():
|
||||||
date_estratte = estrai_date(valore)
|
date_estratte = estrai_date(valore)
|
||||||
|
|
||||||
if date_estratte:
|
if date_estratte:
|
||||||
# Trova la data più vecchia
|
# Seleziona la data (più vecchia o più recente)
|
||||||
data_piu_vecchia = trova_data_piu_vecchia(date_estratte)
|
data_selezionata = seleziona_data(date_estratte, usa_data_recente)
|
||||||
|
|
||||||
# Scrivi i dati nelle nuove colonne
|
# Scrivi i dati nelle nuove colonne
|
||||||
sheet.cell(row=row_idx, column=col_qualifica).value = qualifica
|
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
|
contatore_righe_con_date += 1
|
||||||
else:
|
else:
|
||||||
# Scrivi solo la qualifica se non ci sono date
|
# Scrivi solo la qualifica se non ci sono date
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue