Tabelle da PDF a ExcelSviluppo e personalizzazione

Uno script Python che estrae in Excel le tabelle dei suoi report, listini o estratti conto in PDF

Di solito pronto in 15 minutiRevisioni incluseControllo di qualità
Pacchetti
Pagamento protettoDettagli
  • Le revisioni previste dal pacchetto sono gratuite.
  • Se non risponde entro 3 giorni dalla consegna, il lavoro viene accettato automaticamente.

Il denaro viene riservato al momento del pagamento e sbloccato solo quando accetta il lavoro.

Uno script Python che estrae in Excel le tabelle dei suoi report, listini o estratti conto in PDF

Esempio di risultato

Esempio per il pacchetto Standard

Unire i file mensili delle vendite di 9 negozi in un unico report Excel

Come si esegue

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  Cartella: sales/2026-10, 9 file trovati
2026-11-02 09:14:03 INFO  shop-01.csv: 1.284 righe
2026-11-02 09:14:04 INFO  shop-02.xlsx: 967 righe
2026-11-02 09:14:04 WARN  shop-07.csv: saltate 3 righe senza prezzo (righe 88, 412, 913)
2026-11-02 09:14:05 INFO  Fatto: 10.412 righe -> report-2026-10.xlsx (fogli "Vendite" e "Totali")

Impostazioni, non codice

I nomi delle colonne di ogni negozio si trovano in settings.ini, quindi un nuovo negozio o una colonna rinominata è una riga lì:

[columns]
date = Data, Data vendita, Giorno
product = Prodotto, Articolo, Descrizione
quantity = Q.tà, Quantità, Pz
price = Prezzo, Prezzo unitario

Una parte del codice

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """Legge il file di un negozio e gli dà i nomi di colonna del report."""
    table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
    renamed = {}
    for name, variants in columns.items():
        found = next((c for c in table.columns if c.strip() in variants), None)
        if found is None:
            raise ReportError(f"{path.name}: nessuna colonna per '{name}' (cercate: {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

File: un archivio ZIP con merge_sales.py (310 righe), settings.ini, requirements.txt e un README su come installare Python, eseguire lo script e cosa significa ogni messaggio del registro. Il cliente lo esegue sul proprio computer.

Cliente: una piccola catena di 9 cartolerie; ogni negozio invia le vendite del mese in un file CSV o Excel, con nomi di colonna leggermente diversi. Compito: un unico script che legge tutti i file di una cartella, porta le colonne a una stessa forma e scrive un solo report Excel con tutte le vendite e un foglio di totali per negozio.

Il cliente e tutti i dati sono inventati.

Informazioni sul servizio

Listini dei fornitori, report di banche o marketplace ed elenchi di magazzino arrivano spesso solo in PDF, e copiarne le tabelle in Excel scombina le colonne. Questo script Python legge le tabelle dei suoi PDF e le scrive in Excel o CSV con le colonne al loro posto: ricompone una tabella che si estende su molte pagine, elimina le righe di intestazione ripetute e i piè di pagina e, dallo Standard, trasforma 1 234,50 o (120.00) in numeri veri e le date in date. È calibrato sull'impaginazione dei suoi file, quindi ci invii uno o due PDF tipici o la stessa impaginazione con cifre inventate. Il PDF deve contenere testo vero, come la maggior parte dei file salvati da un programma; scansioni e foto di documenti cartacei richiedono il riconoscimento del testo, che non è incluso. Lo script lo esegue lei e controlla i totali.

Cosa è incluso

  • Cosa riceveUn archivio ZIP con lo script Python, un README con le istruzioni passo passo e, dallo Standard, un file di impostazioni con nomi delle colonne e pagine; il codice è visibile anche nella pagina dell'ordine.
  • Calibrato sulla sua impaginazioneRealizzato e provato sui file di esempio che invia
  • Colonne al loro postoUna riga nel PDF è una riga in Excel
  • Più pagine ricomposteUna tabella lunga diventa un unico foglio senza intestazioni ripetute
  • Numeri veriDallo Standard, importi e date che si possono sommare e ordinare
  • Codice leggibileCon commenti, facile da adattare se l'impaginazione cambia

Come funziona

  1. 1
    EsempiLei invia uno o due PDF tipici e indica la tabella che le serve
  2. 2
    CodiceScriviamo lo script per quell'impaginazione e la guida per eseguirlo
  3. 3
    Lo proviLo esegue sui suoi file e confronta i totali con il PDF
  4. 4
    ModificheChiede modifiche nei limiti del pacchetto e invia eventuali messaggi di errore

Cosa ci serve da lei

Uno o due PDF tipici del tipo che riceve (o la stessa impaginazione con nomi e cifre inventati), quale tabella e su quali pagine le serve, e le colonne che vuole in Excel. Come sono scritti i numeri (virgole, spazi, segni meno o parentesi) e il formato delle date. Se tutti i file hanno la stessa impaginazione o ce ne sono di diversi tipi, circa quanti file elabora e il suo sistema: Windows, macOS o Linux.

Le chiederemo:

  • Che PDF sono?
  • Quali colonne le servono in Excel?
  • Tutti i suoi file hanno lo stesso aspetto?
  • Dove verrà eseguito?

Confronto dei pacchetti

PacchettiBaseUn'impaginazione di tabella15 €StandardTabelle con impostazioni30 €PremiumStrumento per tabelle60 €
Tempi di consegna1 giorno2 giorni3 giorni
Revisioni123
Codicefino a 150 righefino a 400 righefino a 1.000 righe
File di codice1fino a 3fino a 8
File di impostazioniNoSìSì
Messaggi di errore chiari e un logNoSìSì
Opzioni di avvio e una guida per eseguirlo a orari programmatiNoNoSì
Guida all'installazione e all'avvio (README)SìSìSì
LinguaggioPythonPythonPython
Ordina BaseOrdina StandardOrdina Premium

Pagamento protetto

Paga al momento dell'ordine, ma il denaro viene sbloccato solo per un lavoro accettato.

  • Prezzo fissoIl prezzo del pacchetto non cambia dopo il pagamento.
  • Il denaro viene riservatoAl pagamento, l'importo viene solo riservato. Passa a Dleex quando accetta il lavoro.
  • Verificato prima della consegnaOgni risultato passa un controllo di qualità prima di arrivare a lei, e lo vede nella pagina dell'ordine prima di accettarlo.
  • Revisioni gratuiteRichieda revisioni nell'ambito del suo brief tante volte quante ne prevede il pacchetto.
  • Accettazione dopo 3 giorniSe entro 3 giorni dalla consegna non accetta il lavoro né richiede una revisione, il lavoro viene accettato automaticamente. Se scrive nella chat dell'ordine dopo la consegna, l'ordine resta in attesa; dopo la nostra risposta potremmo far ripartire i 3 giorni e glielo indicheremo nella chat.
  • Rifacimento o rimborso totaleSe il risultato non corrisponde al suo brief e le revisioni non hanno risolto il problema, oppure il lavoro richiede più del doppio dei tempi di consegna previsti, scriva nella chat dell'ordine: rifaremo il lavoro o le rimborseremo l'intero pagamento.
Come funziona →

Domande e risposte

Funzionerà con qualsiasi PDF?

È pensato per l'impaginazione dei suoi file di esempio. Se il fornitore cambia impaginazione, lo script potrebbe dover essere adattato. I PDF senza testo vero, come le scansioni, non sono coperti.

Come capisco se il mio PDF ha testo vero?

Lo apra e provi a selezionare una parola con il mouse. Se riesce a selezionarla e copiarla, il testo è vero. Se l'intera pagina si seleziona come un'unica immagine, è una scansione.

Può sbagliare?

Sì, le tabelle nei PDF non sono salvate come tabelle, quindi una riga anomala può spezzare una riga. Per questo lo script annota nel log le pagine su cui aveva dubbi, e prima di usare il risultato conviene confrontare i totali con il PDF.

Devo inviare report reali?

No. La stessa impaginazione con cifre inventate va altrettanto bene, e poi lo script lavora sui suoi file reali sul suo computer.

Non hai trovato la risposta?

Pacchetti