Guide · 5 min read · Updated 2026-08-09
How to get a PDF table into Excel
The route that keeps your columns: PDF to CSV, then CSV into Excel. No retyping, no upload.
This file never leaves your browser.
Copy-pasting a table from a PDF into Excel almost never works. You select a tidy grid, paste, and everything lands in a single column with the numbers jammed against the labels. That is not Excel being awkward — it is a consequence of how PDFs store tables.
A PDF has no concept of a table. There are no rows, no cells, no column definitions. There are only pieces of text, each with an x and y coordinate on the page. The table you see is an illusion created by placing those pieces in neat columns. When you copy, you get the text without the coordinates, and the illusion collapses.
The fix is to reconstruct the grid from the coordinates instead of throwing them away. That is what a PDF-to-CSV conversion does, and CSV is a format Excel opens natively.
The conversion, step by step
- 1Convert the PDF to CSVDrop the file into the converter below. It groups text by vertical position to find rows, then clusters the horizontal positions to work out where the column boundaries are. You get one CSV per table-like region found.
- 2Check the preview before you downloadThe result appears as a real grid. This is the moment to confirm the column count matches what you saw in the PDF. Catching a merge here takes a second; catching it after you have built formulas on top does not.
- 3Open the CSV in ExcelDouble-clicking usually just works. If Excel puts every field in column A, use Data → From Text/CSV instead and pick comma as the delimiter — that path gives you an explicit import dialog rather than relying on your locale settings.
- 4Fix the number formatsCSV carries no formatting, so a column of currency arrives as plain numbers and dates may need re-typing as dates. Select the column and set the format you want. This is one operation per column, not per cell.
When the columns come out wrong
Two failure modes are worth recognising, because they have different fixes.
Columns merged into one: two columns sat close together and the clustering read them as a single group. This is common in dense financial tables. Splitting them afterwards in Excel with Data → Text to Columns is usually quicker than fighting the source file.
One row split into two: a cell contained wrapped text, so its second line sat low enough to look like a new row. You will see a row that is mostly empty with a fragment of text in one cell. Delete the stray row and append the fragment to the cell above.
Why not just use an online table extractor?
Most of them upload your file to a server. For a published price list that is fine. For a payroll summary, a bank statement, or anything under an NDA, it means handing a copy of the data to a third party whose retention policy you have not read. The conversion below runs in your browser: the PDF is parsed by JavaScript on your own machine and never leaves the tab.
This file never leaves your browser.
Frequently Asked Questions
Can I get an .xlsx file directly instead of CSV?
Not from this tool. CSV is deliberate: it is a plain text format with no macros and no vendor quirks, Excel opens it natively, and so does Google Sheets, Numbers, and every database import tool. Save as .xlsx from Excel once you are there if you need the native format.
What happens with tables that span several pages?
Each page is analysed separately, so a table continuing across pages produces a separate CSV per page. Because the column structure is consistent, pasting them under one another in Excel is straightforward — just delete the repeated header row.
Does it handle merged cells?
Partially. A merged header spanning two columns has one text position, so it lands in one cell rather than being duplicated across both. You may need to adjust headers by hand; the data rows underneath are usually correct.
Is there a file size limit?
Only your device memory. Everything runs locally, so there is no server-side cap. Very large PDFs take longer to parse because your own CPU is doing the work.