Convert a PDF Form to Excel: Fillable, Flattened, Scanned
Quick Answer: To convert a PDF form to Excel, pull the field values out rather than the page. For many filled copies of the same fillable form, Acrobat Pro can merge their data into one spreadsheet file with a row per form and a column per field. A short pypdf script does the same for free. If the form was flattened or scanned, the fields are gone, so you need Excel's From PDF table import or OCR.
Converting a PDF form to Excel works best when you treat the form as a database record rather than a document. A fillable form stores each answer in a named field, and those names and values can be exported as rows and columns. Page-to-spreadsheet converters skip that layer, which is why they often return a jumble of labels and blanks.
Drop your bank statement here
PDF or OFX ยท Max 4.4 MB
Uploaded over an encrypted connection. We never ask for your bank login. Privacy
Preview free with no account. Free account to download.
Why doesn't copying from the form work?
What you see on a filled PDF form is two things stacked together: the printed page (labels, boxes, instructions) and a set of interactive fields placed on top of it. The values you typed live in the fields, not in the page's text. Select-all and copy grabs the page text, sometimes with the field contents and sometimes without them, depending on the viewer.
General PDF-to-Excel converters have the same blind spot. They look for rows and columns of text on the page, so a form laid out as a grid of labelled boxes comes out as scattered cells, with values detached from their labels or missing entirely.
There is a second complication. The pypdf documentation notes that some PDFs carry an XFA form, an XML description of the form that overrides the page content in viewers that support it. Those files can look filled in one program and empty in another.
Which kind of PDF form do you have?
Check this first, because it decides the method.
| What you notice | Type | Field data available? | Method |
|---|---|---|---|
| You can click into boxes and type; a field highlight appears | Fillable form (AcroForm) | Yes | Merge or export the form data, or script it |
| A message about a dynamic form or a newer reader is needed | XFA form | Usually, through Acrobat | Use Acrobat's form data tools; scripts may see little |
| The values look typed but you cannot click into them | Flattened form | No, it is page text now | Excel's From PDF import, or a table extractor |
| The whole page is an image; text will not highlight | Scanned or photographed form | No | OCR, then clean up |
A quick test: open the form in a browser or Acrobat Reader and press Tab. If the cursor jumps from box to box, the fields are still there.
How do you combine many filled forms into one spreadsheet?
This is the most common job: 40 registration forms, 200 inspection checklists, or a stack of expense claims, all built from the same template.
With Acrobat Pro
Acrobat Pro includes a command for merging data files into a spreadsheet. You point it at the filled PDFs and it writes one file with a header row of field names and one row per form, which Excel opens directly. The exact menu location has moved between Acrobat versions and interface updates, so search Acrobat's help for "merge data files into spreadsheet" from Adobe's Acrobat site for your version. Our Adobe Acrobat PDF to Excel guide covers the separate page-export feature, which is the wrong tool for form fields.
This only works well when every file shares the same template. If the form changed halfway through the year and a field was renamed, the merged sheet will gain a new column and the old one will stop filling.
With a free pypdf script
If you do not have Acrobat Pro, Python's pypdf library reads form fields. Its forms documentation gives reader.get_form_text_fields() for text fields and reader.get_fields() for every field type. This script turns a folder of filled forms into one CSV:
import csv, glob
from pypdf import PdfReader
rows = []
for path in sorted(glob.glob("forms/*.pdf")):
values = PdfReader(path).get_form_text_fields()
values["source_file"] = path
rows.append(values)
columns = sorted({name for row in rows for name in row})
with open("forms.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=columns)
writer.writeheader()
writer.writerows(rows)Open forms.csv in Excel. Every field name becomes a column, and the source_file column tells you which PDF each row came from, which is useful when a value looks wrong and you need the original. Checkboxes and radio buttons are not text fields, so read them with get_fields() if you need them; their stored values depend on how the form's author set them up.
What about a single form?
For one form, the fastest honest answer is often typing. Twenty fields take a few minutes, and you avoid cleanup.
If the form is long, or you will receive the same form again, use the export route. Acrobat can save a form's field data as a separate data file, apart from the PDF; check Adobe's help for the formats your version offers, then open the result in Excel. The pypdf script above also works on a folder holding only one file.
Once the values are in Excel, you can flip a one-row export into a label-and-value list with a formula: =TRANSPOSE(A1:Z2) in an empty area spills the field names down one column and the values down the next.
How do you handle flattened or scanned forms?
Flattened forms
When a form has been flattened, the answers became ordinary page text. Excel can read some of these directly. Microsoft's import data from data sources article gives the path: Data > Get Data > From File > From PDF, choose the file, then pick a table in the Navigator and select Load or Transform Data. The connector imports tables it detects, so it works on forms with grid-like sections (line items, schedules) and poorly on free-form layouts. Microsoft lists it for Excel for Microsoft 365, Excel 2024, 2021, 2019 and 2016, and notes it needs .NET Framework 4.5 or later.
For forms that are mostly tables, our guide to converting a PDF table to Excel walks through Excel's table picker and drawing the table yourself in Tabula.
Scanned forms
A scan is a picture, so the text has to be recognised first. Options include OCR in Acrobat, Excel's Data from Picture for a single page, and dedicated OCR tools. Handwriting in boxes is the hardest case; expect to check every value against the image. The PDF data extraction guide shows how to pull specific values out with Power Query and text formulas once the text is readable.
Cleaning the result in Excel
Exported form data rarely arrives analysis-ready. A short pass fixes most of it:
- Rename columns. Field names are often internal labels like
txtFirstName_1. Replace the header row with readable names, or keep a mapping sheet if you will repeat the export. - Convert dates and numbers. Form fields store text. Use
=DATEVALUE(B2)for dates typed as text and=VALUE(C2)for amounts, and check that day and month have not been swapped. - Normalise checkboxes. Read a few raw values, then map them with something like
=IF(D2="Off","No","Yes"). - Trim stray spaces.
=TRIM(E2)stops "Smith" and "Smith " from counting as two people in a PivotTable. - Flag blanks. A conditional format on empty required fields shows which forms were sent back incomplete.
If you process forms from many sources in batches, the guide to extracting data from multiple PDF files to Excel covers folder-based workflows.
When the "form" is really a bank statement
People sometimes search for form conversion when what they have is a statement: an account summary at the top and a transaction list below. That is not a form, there are no fields to export, and form tools will find nothing. Statement layouts need a parser that understands dates, descriptions, debits, credits and running balances across page breaks. QuickBankConvert is built for that case; you upload a statement PDF and download the transactions as CSV or Excel. For genuine forms, stick with field exports.
Related guides
Frequently Asked Questions
Can Excel open a fillable PDF form and read the fields?
Not the fields. Excel's From PDF connector imports tables it detects on the page, so it suits flattened forms with grid sections. For live form fields, export the data with Acrobat or a script first.
How do I get data from 100 identical PDF forms into one spreadsheet?
Use Acrobat Pro's merge-to-spreadsheet command or a pypdf loop over the folder. Both produce one row per form and one column per field, as long as every file uses the same template.
Why are some values missing after I export a PDF form?
Usually the field was renamed between template versions, the form is XFA-based, or some answers were flattened into page text. Check one problem file in Acrobat to see which case it is.
Is there a free way to convert a PDF form to Excel?
Yes. The pypdf library is free and reads form fields with a few lines of Python. For a single short form, typing the values is often quicker than any tool.
Ready to convert your bank statement?
Free to preview. No bank login. Results in about a minute.
Convert a statement