FastBankConvertFastBankConvert home

Annual Report PDF to Excel: The Financial Tables Only

By FastBankConvertPublished October 15, 2026Updated October 15, 2026

To turn an annual report PDF to Excel, skip the narrative and extract only the primary financial statements: income statement, balance sheet and cash flow statement. Find their pages from the contents list, label each year column, move note references into their own column, and record the units printed in each table heading.

Finding the financial tables in an annual report PDF

The financial statements in an annual report usually sit in one block after the narrative sections and the auditor's report, followed by the notes. The contents page names that block, often as "Financial statements" or "Consolidated financial statements", and gives its starting page. Extract from there, not from page 1.

Reading the contents page

Annual reports run long, and most of the length is not tables. A typical order is a chair's letter, a business review, governance and remuneration sections, the auditor's report, the primary statements, then many pages of notes. The contents list maps all of it. Note the page numbers for:

  • The income statement, sometimes called the statement of profit or loss, or statement of operations.
  • The statement of comprehensive income, if printed separately.
  • The balance sheet, sometimes called the statement of financial position.
  • The statement of changes in equity.
  • The cash flow statement.

Printed page numbers versus PDF pages

The page numbers in the contents list are the printed ones. The PDF's page count starts from the cover. In a long report, the two can differ by several pages, because covers and front matter are often unnumbered. Jump to the printed page number with your reader's search box, or search for the statement's title and confirm you are on the statement itself, not a mention of it in the narrative.

Look-alike tables in the narrative

The front half of a report is full of tables that look financial: key figures, segment highlights, five-year summaries, alternative performance measures. Some of these are useful, but they are not the audited statements. They may use adjusted figures, different rounding, or a different period. If you need numbers you can tie to the audited accounts, take them from the primary statements and the notes, and label anything from the front half with where it came from.

Year columns in annual report statements

Each primary statement normally shows two periods side by side: the current year and the prior year, with the current year usually on the left. The column headers carry the year or the period end date. Copy those headers exactly into Excel, because a bare pair of number columns loses which year is which.

Reading the headers

Headers vary. Some print just "2026" and "2025". Others print a full date, such as "31 December 2026", or a fiscal period, such as "52 weeks ended 28 March 2026". A company with a fiscal year that does not match the calendar year may print a year label that differs from the calendar year most of the period fell in. Keep the printed header text in a row above the numbers, and add your own clean label, such as FY2026, beside it.

Three columns, not two

Some statements carry a third numeric column: a restated prior year, a second prior year in a cash flow statement, or a parent company column next to the group. Check every numeric column has a header before you start. A column with no visible header often has one printed in a merged cell above it, and extraction tools frequently drop merged header cells.

Comparing several reports

Analysts often want five or ten years in one sheet. Build that by taking the current-year column from each report, plus the prior-year column from the oldest one. Do not stack the prior-year columns from every report on top of each other, because a restated prior year in a later report can differ from the figure originally published. Where the two differ, the later report's number is the restated one; note which you used.

Note references inside annual report tables

Note references are the small numbers in a column, usually headed "Notes", between the line label and the amounts. They point to the explanatory notes later in the report. In Excel, keep them in their own column, because when they run into the label or the first amount they corrupt both.

How they go wrong in extraction

When the Notes column is narrow and close to the amounts, an extraction tool can join a note number to the figure beside it. A revenue line with note 4 and an amount of 12,345 may arrive as 412,345. That is not a visible error. It is a valid number, just wrong, and it will add into totals without complaint. The same thing happens in the other direction, with the note number fused to the end of the label: "Revenue4".

Checks that catch it

Two quick checks catch most fused note numbers:

  1. Every subtotal in the statement should equal the sum of the lines above it. A line with a note number fused onto it breaks the sum by a large, round-looking amount.
  2. Every value in the Notes column should be a small whole number or a reference such as "12a". Anything else means a split went wrong.

When notes come across stuck to labels in a consistent pattern, a regular expression can peel them off in one pass, and using regular expressions to split PDF table text covers the patterns for trailing digits.

Do you need the notes themselves?

The notes are where the detail lives: the breakdown of revenue by segment, the debt maturity table, the lease commitments. They are tables too, and many analysts extract more from the notes than from the primary statements. Treat each note table as a table of its own, with its own sheet, and record the note number in the sheet name.

Are annual report figures in thousands or millions?

Annual report figures are usually printed in thousands or millions, and the unit is stated once, in the statement heading or above the year columns, such as "in millions of dollars" or "£000". Excel cannot see that heading. Record the unit in its own column or convert the values, or totals will be off by a factor of a thousand.

Where the unit is printed

Look in three places: the line under the statement's title, the column headers, and a general note on the basis of preparation near the start of the notes. Per-share figures, such as earnings per share, are usually in whole currency units even when the rest of the statement is in millions. Employee numbers and share counts can be in yet another unit. A single statement can therefore hold three different scales.

Worked example: three income statement lines

The figures below are invented for illustration. As printed, under a heading "in millions of US dollars, except per-share amounts":

Line Notes 2026 2025
Revenue 4 1,284.6 1,190.2
Operating profit 213.9 187.4
Earnings per share 9 1.42 1.25

As clean Excel rows, one fact per row, with the unit stated:

Line Note Year Value Unit
Revenue 4 FY2026 1284.6 USD millions
Revenue 4 FY2025 1190.2 USD millions
Operating profit FY2026 213.9 USD millions
Operating profit FY2025 187.4 USD millions
Earnings per share 9 FY2026 1.42 USD
Earnings per share 9 FY2025 1.25 USD

The long shape takes more rows, but it keeps every number next to its year and unit. A pivot table turns it back into the printed layout in seconds.

Converting to one scale

If you would rather hold every value in whole units, multiply by the factor in a helper column and keep the original. Never overwrite the printed number. When a figure disagrees with a later source, the printed value is what you will check against.

Brackets, dashes and restated figures in annual reports

Annual reports show negative numbers in brackets, nil values as a dash, and figures that changed since the previous report with a "restated" label in the column header. Each needs converting or recording in Excel, because a bracketed amount arrives as text and a dash arrives as a character, not as zero.

Brackets

An amount such as (45.2) means minus 45.2. Excel does not read it as a number when it arrives as text from a PDF. Find and Replace can turn "(" into "-" and remove ")", but run it only on the numeric columns. A label like "Other income (net)" must keep its brackets.

Dashes

A dash, an en dash or an em dash in a numeric column means zero or not applicable. Replace it with 0 where the statement is clearly showing nil, and with an empty cell where the line simply does not apply to that year. Look closely at the character: an en dash and a minus sign look alike on screen and behave differently in a formula.

Restatements

A "restated" or "re-presented" label means the prior year differs from the number published a year earlier, often because of an accounting change or a discontinued business. Keep that label in the header text you copied, and add a column flag in the long-format sheet. Anyone comparing your sheet with last year's report will otherwise think one of you made a mistake.

Splitting pasted lines

If you copied a statement as text rather than extracting it as a table, each line arrives as one cell with the label and numbers run together. Splitting pasted PDF rows with TEXTSPLIT shows how to break those lines into columns, and the bracket and dash fixes above then apply to the result.

Does a US annual report need PDF extraction at all?

A US public company's annual report often does not need PDF extraction, because the same financial statement figures are filed with the SEC in a structured format. The SEC publishes them as downloadable data, so for those companies the numbers can go into Excel without reading the PDF.

The SEC's structured data

According to the SEC's page on its Financial Statement Data Sets, the data sets hold the numeric data from the face financial statements of corporate filings, taken from filings made in XBRL format, and are updated quarterly. The SEC also says the data is not guaranteed accurate and is not a substitute for the full filings.

For a single company, the SEC's EDGAR API documentation describes companyfacts and companyconcept endpoints that return a company's XBRL data as JSON, with no API key required. A script, or Power Query in Excel, can read that JSON straight into a sheet.

When the PDF is still the right source

Structured filings do not cover everything:

  • Companies outside the US, or private companies, may publish only a PDF.
  • The glossy annual report sent to shareholders can contain tables, such as segment highlights or sustainability metrics, that the structured data does not hold.
  • You may need the figures exactly as printed, for an audit trail that matches the document on file.

For those cases, the steps in this post apply. For reports you process often, a Python script that reads PDF tables into xlsx pays back the setup time quickly.

Statements of your own

Not every long financial PDF is a company report. If what you are working through is a stack of your own bank statements, the job is different: one table per month, with a running balance that has to tie. Getting older bank statements back from your bank covers the first step. FastBankConvert is aimed at that statement job rather than annual reports, turning a statement PDF into Excel or CSV and warning you when its balances do not add up. It is not open yet, and you can join the list on the get-started page.

All posts in Tables and data from PDFs