Come importare tabelle PDF in Excel: una guida pratica

2026-10-14 09:05:36 Jack Du
AI Summarize:
ChatGPT
ChatGPT ✓
Claude ✓
Grok ✓
Perplexity ✓
Quick
Quick
Concise overview
Highlights
Key takeaways
Detailed
Structured explanation
Brief
One sentence summary
Summarize |

Import PDF Tables into Excel

Le tabelle PDF contengono spesso dati che devi ordinare, filtrare o analizzare in Excel. Copiare e incollare può lasciare quei dati in un'unica colonna o alterarne la struttura di righe. La funzionalità integrata Da PDF di Excel offre un modo più diretto per importare le tabelle rilevate nelle celle del foglio di lavoro.

Questa guida spiega come importare tabelle PDF con Power Query, combinare tabelle su più pagine, conservare gli zeri iniziali e verificare gli spazi nel testo a capo. Include anche un flusso di lavoro Python per estrarre tabelle da una cartella di file PDF in cartelle di lavoro Excel.

I passaggi di Power Query riportati di seguito utilizzano Excel per Windows con il connettore Da PDF disponibile. Inizia con un PDF basato su testo; le pagine scansionate richiedono un flusso di lavoro OCR prima che i dati delle loro tabelle possano essere estratti.

1. Importare tabelle PDF in Excel con Power Query

La funzionalità Da PDF di Excel consente di identificare le tabelle in un PDF e importarne i dati nelle celle del foglio di lavoro. Apri la tabella in Editor di Power Query per esaminarne il contenuto prima di caricarla.

  1. Apri Excel e seleziona Dati → Recupera dati → Da file → Da PDF. Get data from PDF
  2. Seleziona il file PDF e fai clic su Importa.
  3. Nella finestra Navigator, seleziona una voce Tabella rilevata per visualizzarne l'anteprima. Verifica che contenga le righe e le colonne necessarie. Select a detected table
  4. Fai clic su Trasforma dati per aprire Editor di Power Query. Transform data
  5. Esamina la tabella, quindi seleziona Home → Chiudi e carica per caricarla in un foglio di lavoro Excel. Close and load

Se l'anteprima è già corretta e non sono necessarie modifiche, puoi fare clic su Carica direttamente in Navigator.

Per le tabelle che richiedono combinazione o pulizia, apporta le modifiche descritte nelle sezioni seguenti prima di caricare il risultato finale.

2. Combinare tabelle su più pagine

Power Query può riconoscere una tabella che si estende su più pagine PDF come un'unica tabella o come tabelle separate. Controlla le voci in Navigator prima di decidere se accodarle.

Quando Power Query rileva una sola tabella

Intestazioni coerenti ripetute su ogni pagina possono aiutare Power Query a riconoscere l'intera tabella. In Navigator, può apparire come un'unica voce come Tabella001 (Pagina 1–3) .

Seleziona quella voce e controlla l'anteprima. Se contiene tutti i record richiesti, fai clic su Carica , oppure scegli Trasforma dati per apportare prima le modifiche. Non è necessaria alcuna operazione di accodamento.

Quando Power Query rileva tabelle separate

Se solo la prima pagina contiene le intestazioni, Power Query può rilevare le pagine di continuazione come tabelle separate con nomi di colonna generici come Column1, Column2 e Column3.

Per combinarle:

  1. In Navigator, abilita Seleziona più elementi.
  2. Seleziona le tabelle che appartengono alla stessa tabella su più pagine e controlla le relative anteprime. Select the tables belonging to the same cross-page table
  3. Fai clic su Trasforma dati. Ogni tabella selezionata appare come una query separata in Editor di Power Query. Transform data
  4. Usa le intestazioni della prima tabella come riferimento e rinomina le colonne corrispondenti nelle tabelle di continuazione. Ad esempio, rinomina Column1 in Employee ID e Column2 in Full Name. Rename column names
  5. Controlla che i nomi delle colonne corrispondenti coincidano esattamente, inclusi eventuali spazi, prima di accodare.

Le intestazioni di una sola parola come Department di solito non devono essere digitate di nuovo. Presta maggiore attenzione alle intestazioni composte da più parole, soprattutto a quelle che vanno a capo su più righe nel PDF.

Ad esempio, Employee e ID possono apparire su righe separate nella cella di origine. Navigator può visualizzare l'intestazione come Employee ID , anche se il suo nome effettivo contiene un'interruzione di riga anziché uno spazio. Rinominare la colonna di un'altra tabella in Employee ID con uno spazio normale creerebbe quindi una mancata corrispondenza.

Per un'intestazione a capo, fai clic con il pulsante destro del mouse sulla colonna nella prima query e seleziona Rinomina . Seleziona l'intero nome esistente e digita manualmente un nome su una sola riga, ad esempio Employee ID. Usa quel nome esatto per le colonne corrispondenti nelle altre query. Evita di copiare l'intestazione originale a capo, che potrebbe conservare l'interruzione di riga nascosta.

Una volta che i nomi delle colonne sono coerenti:

  1. Seleziona una query e scegli Home → Accoda query ▼ → Accoda query come nuova. Append queries as new
  2. Scegli Due tabelle o Tre o più tabelle , a seconda del numero di query. Three or more tables
  3. Seleziona le tabelle da accodare. Per tre o più tabelle, aggiungile all'elenco Tabelle da accodare e disponile nell'ordine delle pagine PDF. Select tables to append
  4. Fai clic su OK per creare la query combinata. Combined query

Power Query accoda i dati in base alla corrispondenza dei nomi delle colonne, non alla posizione delle colonne. Se il risultato contiene due colonne apparentemente identiche o valori null imprevisti, torna alle query di origine e controlla i loro nomi per interruzioni di riga nascoste o spazi aggiuntivi.

Infine, esamina la tabella combinata per verificare la presenza di record mancanti, righe di intestazione ripetute e testo di piè di pagina indesiderato prima di caricarla in Excel.

3. Conservare gli zeri iniziali nelle colonne ID

Gli ID dipendente, i codici prodotto e identificatori simili possono contenere zeri iniziali. Se Power Query assegna un tipo di dati numerico a questi valori, un ID come 00123 può apparire come 123.

Per conservare l'ID originale:

  1. In Editor di Power Query, seleziona la colonna Employee ID. Select employee id column
  2. Apri il menu Tipo di dati e cambia Numero intero in Testo. Change data type
  3. Se viene richiesto di sostituire la conversione di tipo esistente, scegli Sostituisci corrente. Replace current
  4. Controlla che i valori mostrino i loro zeri iniziali, ad esempio 00123 invece di 123. Check the values

Tratta gli identificatori come testo anche quando contengono solo cifre. Il loro scopo è identificare i record, non fungere da valori per i calcoli.

Apporta questa modifica prima di caricare i dati in Excel. Se la modifica del tipo non ripristina gli zeri, confronta i valori con il PDF originale; gli zeri mancanti non possono essere dedotti in modo affidabile a meno che gli identificatori non seguano una regola nota di lunghezza fissa.

4. Verificare il testo a capo e caricare la tabella finale

Il testo che va a capo su più righe in una cella PDF può essere unito senza spazio durante l'importazione. Ad esempio, un nome visualizzato come Robert su una riga e Williams su quella successiva può diventare RobertWilliams.

Controlla le colonne contenenti nomi, indirizzi e descrizioni confrontandole con il PDF originale. Correggi individualmente gli errori di spaziatura confermati. Per un valore errato specifico, seleziona la colonna e usa Trasforma → Sostituisci valori per sostituirlo con il testo corretto.

Evita di applicare una regola generale che inserisce spazi ovunque il testo sia andato a capo. Anche una singola parola può andare a capo tra le righe: Coordinato seguito da r dovrebbe diventare Coordinator , senza spazio.

Prima di caricare la tabella finale, verifica che:

  • Il numero di record corrisponda alla tabella di origine.
  • I record ai confini di pagina siano completi.
  • Le colonne ID conservino i loro zeri iniziali.
  • Il testo a capo abbia la spaziatura corretta.
  • Le colonne numeriche e data utilizzino tipi di dati appropriati.

Quindi seleziona Home → Chiudi e carica ▼ → Chiudi e carica in , scegli Tabella , e seleziona il foglio di lavoro di destinazione.

Se hai accodato diverse query a livello di pagina, carica solo la query combinata finale come tabella del foglio di lavoro. Imposta le query intermedie su Crea solo connessione in modo che rimangano disponibili per la query combinata senza creare tabelle separate nel foglio di lavoro.

5. Automatizzare l'estrazione di tabelle PDF in Excel con Python

Power Query offre un modo interattivo per importare e preparare i dati delle tabelle PDF. Quando devi elaborare più file PDF in modo ripetuto, puoi automatizzare l'estrazione con Python.

L'esempio seguente usa Spire.PDF for Python per rilevare le tabelle e leggere il contenuto delle celle, e openpyxl , una libreria Excel open source, per scrivere i dati estratti in file XLSX. Ogni PDF produce una cartella di lavoro, con ogni tabella rilevata salvata in un foglio di lavoro separato.

Installare le librerie

Installa entrambi i pacchetti:

pip install Spire.PDF openpyxl

Codice per l'estrazione in batch

Aggiorna INPUT_FOLDER e OUTPUT_FOLDER in base alle tue directory. Lo script legge i file PDF direttamente dalla cartella di input, esamina ogni pagina e salva le cartelle di lavoro risultanti nella cartella di output.

from pathlib import Path

from spire.pdf import PdfDocument, PdfTableExtractor
from openpyxl import Workbook
from openpyxl.styles import Alignment


INPUT_FOLDER = Path(r"E:\Documents\input")
OUTPUT_FOLDER = Path(r"E:\Documents\output")


def extract_pdf_tables_to_excel(pdf_path, output_path):
    doc = PdfDocument()

    try:
        doc.LoadFromFile(str(pdf_path))
        extractor = PdfTableExtractor(doc)

        workbook = Workbook()
        workbook.remove(workbook.active)
        table_count = 0

        # Extract tables from every page.
        for page_index in range(doc.Pages.Count):
            tables = extractor.ExtractTable(page_index)

            if tables is None:
                continue

            for table_index in range(len(tables)):
                table = tables[table_index]
                row_count = table.GetRowCount()
                column_count = table.GetColumnCount()

                if row_count == 0 or column_count == 0:
                    continue

                sheet = workbook.create_sheet(
                    title=f"Page{page_index + 1}_Table{table_index + 1}"
                )

                for row_index in range(row_count):
                    for column_index in range(column_count):
                        text = table.GetText(row_index, column_index)

                        cell = sheet.cell(
                            row=row_index + 1,
                            column=column_index + 1
                        )

                        # Preserve extracted values as literal text.
                        cell.value = text if text is not None else ""
                        cell.data_type = "s"
                        cell.number_format = "@"
                        cell.alignment = Alignment(
                            vertical="top",
                            wrap_text=True
                        )

                for column_cells in sheet.columns:
                    column_letter = column_cells[0].column_letter
                    sheet.column_dimensions[column_letter].width = 22

                table_count += 1

        if table_count == 0:
            print(f"Skipped: {pdf_path.name} — no tables detected.")
            return

        workbook.save(str(output_path))
        print(
            f"Saved: {output_path.name} "
            f"({table_count} tables)"
        )

    finally:
        doc.Close()


def main():
    if not INPUT_FOLDER.is_dir():
        raise FileNotFoundError(
            f"Input folder not found: {INPUT_FOLDER}"
        )

    OUTPUT_FOLDER.mkdir(parents=True, exist_ok=True)

    pdf_files = sorted(
        (
            path for path in INPUT_FOLDER.iterdir()
            if path.is_file() and path.suffix.lower() == ".pdf"
        ),
        key=lambda path: path.name.lower()
    )

    if not pdf_files:
        print("No PDF files found in the input folder.")
        return

    for pdf_path in pdf_files:
        output_path = OUTPUT_FOLDER / f"{pdf_path.stem}.xlsx"

        try:
            extract_pdf_tables_to_excel(pdf_path, output_path)
        except Exception as error:
            print(f"Failed: {pdf_path.name} — {error}")


if __name__ == "__main__":
    main()

Lo script chiama ExtractTable() per ogni pagina PDF, quindi legge ogni tabella rilevata con GetRowCount(), GetColumnCount() e GetText(). Le celle estratte vengono scritte nelle righe e colonne corrispondenti in un nuovo foglio di lavoro.

I file senza tabelle rilevate vengono saltati. Se un PDF non viene elaborato, lo script segnala l'errore e continua con i file rimanenti.

Potrebbe interessarti anche: Estrarre tabelle da PDF usando Python

Output e considerazioni

Automate PDF Table Extraction

Un PDF denominato report.pdf produce una cartella di lavoro denominata report.xlsx. I nomi dei fogli di lavoro identificano la pagina e la tabella di origine, ad esempio Page1_Table1, Page1_Table2 e Page2_Table1.

Tutti i valori estratti vengono scritti come testo. Ciò preserva gli zeri iniziali presenti nel contenuto estratto, come 00123, e impedisce che il testo che inizia con = venga interpretato come formula di Excel. Anche importi e date rimangono testo e potrebbero richiedere una conversione prima di calcoli o analisi basate sulle date.

Questo esempio esporta i dati delle tabelle invece di riprodurre l'aspetto originale del PDF. Non ricrea caratteri, bordi o formattazione delle celle unite di origine e non corregge errori di estrazione come spazi mancanti. Se una tabella su più pagine viene rilevata come tabelle separate, quelle parti vengono salvate in fogli di lavoro separati anziché essere combinate automaticamente.

Esamina la cartella di lavoro generata confrontandola con il PDF di origine prima di usarne i dati. Eseguire di nuovo lo script sovrascrive i file XLSX esistenti con gli stessi nomi nella cartella di output.

6. Domande frequenti

Perché non riesco a trovare l'opzione Da PDF in Excel?

I connettori disponibili dipendono dalla versione e dalla piattaforma di Excel. Controlla Dati → Recupera dati → Da file per Da PDF . Se manca, verifica se la tua installazione supporta il connettore PDF. I passaggi di importazione di Power Query in questa guida presuppongono che l'opzione sia disponibile.

Posso importare una tabella PDF scansionata usando questi metodi?

Un PDF scansionato memorizza il contenuto delle pagine come immagini. I flussi di lavoro mostrati qui non includono l'OCR, quindi sono destinati a PDF basati su testo. Per i documenti scansionati, usa uno strumento OCR in grado di riconoscere la struttura delle tabelle ed esportare dati strutturati, quindi confronta i valori estratti con l'originale.

La tabella Excel importata avrà esattamente l'aspetto del PDF?

Questi metodi si concentrano sull'estrazione dei dati delle celle per l'uso in Excel. Non garantiscono che caratteri, colori, bordi, larghezze di colonna o celle unite del PDF vengano riprodotti. Applica la formattazione di Excel dopo l'importazione se hai bisogno di un aspetto particolare.

Posso aggiornare la tabella Power Query quando il PDF cambia?

Sì. Se il PDF di origine viene aggiornato nello stesso percorso file, usa Dati → Aggiorna tutto per rieseguire la query. Esamina il risultato successivamente, soprattutto se il numero di pagine, le tabelle rilevate o la struttura delle colonne sono cambiati. Tali modifiche potrebbero richiedere aggiustamenti alla query.

7. Conclusione

Importare tabelle PDF in Excel implica più che rilevare righe e colonne. Power Query fornisce un punto di partenza pratico, ma i passaggi successivi dipendono dal risultato: una tabella su più pagine potrebbe essere pronta per essere caricata come un'unica tabella, oppure le sue sezioni potrebbero richiedere nomi di colonna corrispondenti prima di poter essere accodate. Anche gli zeri iniziali e gli spazi nel testo a capo meritano attenzione, perché una tabella apparentemente pulita può comunque contenere valori alterati.

Per le attività ricorrenti, il flusso di lavoro Python estende questo processo a una cartella di PDF, salvando ogni file come cartella di lavoro con fogli di lavoro separati per le tabelle rilevate. Scegli il flusso di lavoro più adatto al tuo carico di lavoro, quindi confronta l'output con il PDF di origine, in particolare identificatori, testo su più righe e record ai confini di pagina. Questi controlli aiutano a garantire che i dati importati siano pronti per il filtraggio, i calcoli e ulteriori analisi.

Vedi anche