# Extract Text from PDF to Excel When It Is Not a Table

- Author: FastBankConvert (https://www.fastbankconvert.com)
- Published: 2026-07-26
- Updated: 2026-07-26
- Category: Tables and data from PDFs
- Canonical: https://www.fastbankconvert.com/blog/extract-text-from-pdf-to-excel

> Extract text from PDF to Excel when the content is paragraphs or lists, not a table: line per row, splitting by pattern, keeping the order.
To extract text from a PDF to Excel when it is not a table, put one printed line in each row first, in reading order. Then split each line into fields with a formula that looks for a pattern, such as a number followed by a full stop, and rejoin lines that belong to one paragraph.

## Prose PDF text versus PDF tables in Excel

Prose text in a PDF has no columns to detect, so table converters either refuse it or force it into a grid that means nothing. A paragraph, a numbered list or a block of contract clauses has to be treated as lines of text first, with the structure added in Excel afterwards by rules you choose.

### What a table tool does with prose

A table extractor looks for words that line up vertically down the page. In a paragraph, words line up by accident. The word "the" on line 3 may sit right above "and" on line 4, and a tool hunting for columns will draw a boundary through that gap. The result is a sheet where each sentence is cut into three or four pieces, scattered across columns A to D. Nothing is lost, but nothing is usable either.

### What you actually want from prose

For non-table text, the useful target is usually one of these shapes:

- **One line per row**, for lists where each printed line is already a record, such as a list of names or part numbers.
- **One item per row**, for numbered or bulleted lists where an item can wrap over several printed lines.
- **One field per column**, for lines that follow a pattern, such as "Clause 4.2 Termination: either party may...", which splits into a number, a heading and a body.

Address blocks are a special case of the last shape. A mailing address prints as three or four lines that belong to one record, and the guide to [pulling addresses out of a PDF into columns](/blog/extract-addresses-from-pdf-to-excel) covers how to fold those lines into street, city and postcode.

### Text versus image

Before any of this, check that the PDF holds real text. Try to select a single word. If it highlights on its own, the characters are in the file. If the whole page highlights as one block, or nothing highlights, the page is an image, and you need text recognition before Excel can do anything with it.

## One PDF text line per Excel row

The simplest way to get one printed line into each Excel row is to select the text in a PDF reader, copy it, and paste it into cell A1 of an empty sheet. Each line break becomes a new row. Check the first and last rows against the page, because readers differ in what they copy.

### Paste into a plain sheet

Paste with Ctrl+V into column A. If Excel offers to spread the text across columns, decline for now. You want the raw lines in one column, untouched, so you can see exactly what came across. Keep this column as your source and do all later work in columns to its right. If a formula goes wrong, the original lines are still there.

### Where line breaks come from

A PDF does not store paragraphs. It stores runs of text placed at positions on the page. When a reader copies text, it decides where one line ends by looking at those positions. Most readers insert a line break wherever the printed line ends, so a paragraph that wraps over five printed lines arrives as five rows. Some readers try to be helpful and join lines into paragraphs. Neither is wrong, but you need to know which one you have, because it decides whether the next step is splitting or joining.

### Blank rows and page furniture

Expect some noise in the pasted column:

1. Blank rows where the PDF had space between paragraphs. These can be useful as paragraph markers, so do not delete them yet.
2. Page numbers, running headers and footers repeated at each page break.
3. Hyphenated words split across two rows, such as "termi-" on one row and "nation" on the next.

Filter column A for the header and footer text and delete those rows. Leave the blank rows until you have decided how to group lines. When a pasted block is actually a table that landed in one column, the fixes in [repairing a PDF table that pastes into a single column](/blog/copy-pdf-table-to-excel#why-does-a-pasted-pdf-table-land-in-one-column) apply instead.

## How do you split PDF text lines by pattern in Excel?

You split PDF text lines by pattern with formulas that find a fixed marker in each line and cut around it. A full stop after a number, a colon after a heading, or the first space after a date are all markers. TEXTBEFORE and TEXTAFTER handle most cases in current Excel; FIND with LEFT and MID works in older versions.

### Worked example: six policy clauses

The example below uses made-up clauses from a fictional staff handbook. After pasting and joining wrapped lines, column A holds one clause per row:

| Row | A (pasted clause) |
| --- | --- |
| 2 | 1. Hours: The office opens at 8:00 and closes at 18:00. |
| 3 | 2. Leave: Requests go to your manager two weeks ahead. |
| 4 | 3. Expenses: Receipts are due within 30 days of purchase. |
| 5 | 4. Equipment: Laptops stay on site unless approved. |
| 6 | 5. Visitors: Sign in at reception and wear a badge. |
| 7 | 6. Parking: Spaces are allocated by the facilities team. |

Three formulas split each row into a clause number, a heading and a body:

- **B2, clause number:** `=VALUE(TEXTBEFORE(A2,"."))` returns 1.
- **C2, heading:** `=TRIM(TEXTBEFORE(TEXTAFTER(A2,"."),":"))` returns Hours.
- **D2, body:** `=TRIM(TEXTAFTER(A2,":"))` returns the sentence after the colon.

Fill the three formulas down to row 7. The result is a six-row table with clause numbers you can sort and filter, headings you can look up, and the full text kept intact.

### Why the first marker matters

TEXTAFTER with no instance number cuts at the first match. In row 2, the time "8:00" also contains a colon, but it comes after "Hours:", so the first colon is the right one. If a heading itself could contain a colon, cut on ": " (colon and space) instead, or count from the right with a negative instance number.

### Splitting into many columns at once

When a line holds several fields separated by the same character, one formula can spill them all. The TEXTSPLIT function divides text at a delimiter and spills the pieces across columns; [Microsoft's TEXTSPLIT reference](https://support.microsoft.com/en-us/office/textsplit-function-b1ca414e-4c21-4ca0-b1b7-bdecace8a6e7) lists its arguments and says it is available in Excel for Microsoft 365 and Excel 2024. For lines with an irregular structure, separate formulas per field, as above, are easier to check.

### Older Excel versions

Without TEXTBEFORE, the same clause number comes from `=VALUE(LEFT(A2,FIND(".",A2)-1))`. The body comes from `=TRIM(MID(A2,FIND(":",A2)+1,999))`. These are longer, but they behave the same way and work in every desktop version.

## Grouping wrapped PDF paragraphs into one cell

A wrapped paragraph arrives as several rows, and you rejoin it by giving every row a group number, then joining all rows that share a number. The group number goes up by one each time a row starts a new item, which you detect with a simple test, such as "starts with a digit and a full stop".

### Step 1: flag the start of each item

In B2, write a test that returns TRUE for a row that begins a new item. For a numbered list, `=ISNUMBER(VALUE(TEXTBEFORE(A2,".")))` works when every item starts with "1.", "2." and so on. For bullet points, test whether the first character is the bullet symbol. For paragraphs separated by blank lines, test whether the row above is blank.

### Step 2: number the groups

In C2, enter `=IF(B2,1,0)`. In C3, enter `=C2+IF(B3,1,0)` and fill it down. Every row now carries the number of the item it belongs to. A continuation row gets the same number as the row above it, because its test returned FALSE.

### Step 3: join each group

On a second sheet, list the group numbers 1, 2, 3 and so on in column A. In B1, join every source row in that group with a space: `=TEXTJOIN(" ",TRUE,FILTER(Sheet1!A:A,Sheet1!C:C=A1))`. Fill it down. Each item is now one cell, ready for the splitting formulas from the previous section.

### Hyphens at line ends

Words broken with a hyphen at the end of a printed line need one more pass. After joining, a word like "termi- nation" contains a hyphen followed by a space. Replace "- " with nothing using Find and Replace, but check a few results first. A genuine hyphenated term such as "follow- up" would lose its hyphen too, so scan the replaced cells before moving on.

## Does PDF text order survive the trip into Excel?

PDF text order survives only when the page has a single column of text. On pages with two columns, sidebars, pull quotes or footnotes, the reader may copy lines across both columns at once, so sentence halves from different paragraphs end up interleaved in the same Excel row.

### Why order breaks

The PDF stores each run of text with a position, and the order runs appear in the file is up to the program that made it. A reader rebuilding the text has to guess the reading order from the positions. For a single column, top to bottom is the obvious answer. For two columns, a naive reader goes left to right across the whole page, which picks up the first line of the left column, then the first line of the right column, then the second line of the left column.

### How to spot scrambled order

Read the first ten pasted rows aloud. Scrambled text shows itself fast:

- Sentences stop mid-thought and the next row starts a different topic.
- A row ends with a word that only makes sense two rows later.
- A heading from a sidebar appears in the middle of a paragraph.

### Fixing it without retyping

Copy one column at a time. Many readers let you drag a selection that starts at the top of the left column and ends at the bottom of the same column, which keeps the right column out. For sidebars and boxes, copy them separately and paste them into their own area of the sheet. When pages are long and this gets tedious, a short script that reads each text run with its position and sorts by column first, then by height, does the job for every page; the walkthrough on [reading PDF text items with positions in Node](/blog/extract-table-from-pdf-in-javascript) shows the position data that sorting works from.

## When PDF text belongs in Word, not Excel

PDF text belongs in Word when you need to read, edit or quote it, rather than sort, filter or count it. A spreadsheet earns its place only when each piece of text becomes a record with fields. Long paragraphs crammed into cells are hard to read and easy to cut off in print.

### Signs that Excel is the right home

Excel suits text extraction when at least one of these is true:

1. You need to sort or filter the items, for example clauses by number or products by code.
2. You need to compare the text with another list, such as checking which names on a PDF roster appear in a sign-up sheet.
3. Each item has a short label and a value that you will total, count or look up.

### Signs that it is not

Excel is a poor fit when the text is one long argument, such as a report narrative, where each paragraph depends on the one before. It is also a poor fit when formatting carries meaning, like bold defined terms or indented sub-clauses. Excel cells hold formatting badly and a formula that copies text drops it entirely.

### Mixed documents

Many PDFs mix both kinds of content. A supplier contract may have twenty pages of clauses and one page with a price schedule. Extract the schedule as a table and leave the clauses in a document. When the schedule is laid out as a real grid, the steps for [converting a PDF table into Excel columns](/blog/convert-pdf-table-to-excel) are quicker than any text method.

### Statements are a different job

Bank statements look like text but behave like tables: every transaction line has a date, a description and an amount in fixed places. If statements are what you are pulling text from, a tool built for them saves the pattern work. The guide to [picking a bank statement converter for household use](/blog/bank-statement-converter-for-personal-use) covers that choice, and FastBankConvert, which turns statement PDFs into Excel or CSV files, is taking early sign-ups on its [get-started page](/get-started).
