Blog β€Ί

How to extract tables from a PDF to Excel (and why it keeps going wrong)

30 September 2026 Β· 9 min read

A supplier's price list, a bank statement, a page of lab results, a 40-page annual report: the numbers are right there, and yet getting them into a spreadsheet eats an afternoon. Here is what actually works for which kind of PDF, why each method fails, and how to check the result before anyone builds a decision on it.

First, find out which kind of PDF you have

This decides everything. Open the PDF and try to select a single word in the table with your mouse.

A surprising number of "PDF to Excel doesn't work" complaints are scanned PDFs run through a tool that only handles text. Check this before you blame the tool.

1. Copy and paste (30 seconds, works more often than you'd think)

Select the table in your PDF viewer, copy, paste into Excel or Google Sheets. With a clean, single-page text PDF this often lands in the right columns, especially from Acrobat, Edge or Chrome's viewer.

When it fails: everything lands in one column, or one cell per line. Two rescues:

Don't spend more than five minutes on this. If it's a mess, move on.

2. Excel's built-in PDF import (the best free option for text PDFs)

Excel can read tables directly from a PDF, and most people don't know it's there: Data β†’ Get Data β†’ From File β†’ From PDF. It is available in Microsoft 365 on Windows and in recent versions of Excel for Mac. Pick the file, and a navigator lists every table Excel detected, per page, with a preview. Choose one, click Load.

Two things make this the strongest free option:

When it fails: tables without ruling lines get split or merged, multi-line cells become extra rows, and it does nothing for scanned PDFs. The preview shows you the problem before you load, so you lose nothing by trying.

3. Adobe Acrobat (paid, handles scans)

Acrobat Pro's Export PDF β†’ Spreadsheet is the most polished single button, and it runs OCR on scanned pages as part of the export. It's the right answer if you already pay for Acrobat and you're doing this weekly. It's not worth a subscription for one file: the free online converters (Adobe's included) work the same way but require uploading the document, which for a bank statement or a customer list you may not be allowed to do.

4. Tabula (free, open source, nothing leaves your computer)

Tabula is a small tool that runs locally in your browser. You open a PDF, draw a rectangle around the table, and it exports CSV. Its strength is the rectangle: you decide exactly what counts as the table, which fixes most of the "it merged the footnotes in" problems automatically. It has two extraction modes, Lattice for tables with ruling lines and Stream for tables aligned only by whitespace; if one produces nonsense, try the other.

When it fails: it needs Java, it's text PDFs only, and it's one table at a time. For fifty pages you want the next option.

5. Python, for anything repeated or large

If the same kind of PDF arrives every week, or you have a hundred of them, a short script beats every GUI. Three libraries cover almost all cases:

import pdfplumber, csv

with pdfplumber.open("statement.pdf") as pdf, open("out.csv", "w", newline="") as f:
    w = csv.writer(f)
    for page in pdf.pages:
        for table in page.extract_tables():
            w.writerows(table)

For scanned PDFs, run OCR first: ocrmypdf in.pdf out.pdf adds a text layer using Tesseract, after which the same script works. Expect OCR to misread some digits (1/7, 0/8, 5/6 are the usual suspects), which brings us to the part everyone skips.

Why it goes wrong: the six usual suspects

  1. Merged cells and multi-line cells. A product description that wraps onto two lines becomes two rows, with the price on the first and an empty row after. Fix: sort out which rows have an empty key column and merge them upward.
  2. Numbers that arrive as text. Thousands separators, currency symbols, trailing minus signs ("1.250,00-") and non-breaking spaces make Excel treat the number as a label; your SUM is silently wrong. Fix: Text to Columns with the right locale, or in Power Query, Change Type using Locale.
  3. German vs. English decimals. "1.250,00" is one thousand two hundred fifty in Berlin and one point two five in Boston. Excel guesses from your system locale, not the document's. Always set it explicitly.
  4. Tables that continue across pages. Repeated headers appear as data rows in the middle of your data, and page footers ("Page 3 of 12", running totals) slip in. Fix: filter rows whose first cell equals the header text.
  5. Columns aligned by whitespace only. Without ruling lines, tools guess column boundaries from gaps. A single wide value pushes everything after it one column right on that row. Tabula's rectangle or Camelot's stream mode with explicit column positions fixes this.
  6. Scans. Skew, low resolution and stamps over the table produce plausible-looking wrong digits. OCR confidence isn't shown in the output, so nothing looks wrong.

Check it before you trust it

Whatever method you use, do this before the spreadsheet goes anywhere:

Which one should you use?

Or let pdfagents.ai do it, in your browser

Drop the PDF and say β€œput the tables into Excel” or β€œpull the tables into CSV”. Tables are found from aligned columns, wrapped lines are merged back into their row, and in the Excel file numbers are stored as real numbers whether the document writes 1.250,00 or 1,250.00. Nothing is uploaded. It works on text PDFs; for a scan, say β€œmake it searchable” first. Then run the checks above on the result: we would rather you verify a total than trust us. Downloads are free.

PDF tables to Excel β†’ …or to CSV